openvpn debian

Już kiedyś miałem stawiać sobie vpna ale dopiero wpis Inzaghi89 zagonił mnie do roboty. Instalacja i konfiguracja przebiega niemalże identycznie w porównaniu z CentOS.

Potrzebujemy włączyć TUN/TAP (w moim przypadku z poziomu Solusa). Następnie kopiujemy easy-rsa do folderu z openvpn (w wersji stable easy-rsa jest jeszcze w paczce, w nowszych trzeba ją pobrać z githuba):

cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa

W pliku vars ustawiamy wielkość klucza, od 1024 do 4096, wedle uznania:

export KEY_SIZE=4096

Następnie, przystępujemy do konfiguracji:

. ./vars
./clean-all
./build-ca

Podajemy dane wedle uznania, mamy już klucz ca i certyfikat. Tworzymy serwer:

./build-key-server server

Znowu podajemy dane, server to oczywiście tylko nazwa, na końcu podpisujemy certyfikat dając „y”. Mamy już klucz i certyfikat serwera. To samo robimy dla klienta:

./build-key client

Podobnie jak poprzednio wypełniamy dane wedle uznania i podpisujemy.Teraz generujemy DH o wielkości jaką ustaliliśmy na początku:

./build-dh

Pojawi nam się plik dhx.pem gdzie x to oczywiście wielkość :). Co by się logować kluczem można użyć jeszcze użyć tls-auth:

openvpn --genkey --secret ta.key
mv ta.key keys

Na koniec konfigurujemy samo openvpn:

cd /etc/openvpn
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz .
gunzip server.conf.gz

Zmieniamy co trzeba:

port xxx
proto tcp
dev tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key  # This file should be kept secret
dh /etc/openvpn/easy-rsa/keys/dh4096.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
keepalive 10 120
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0 # This file is secret
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log-append openvpn.log
verb 3

Startujemy i sprawdzamy czy ruszy:

/etc/init.d/openvpn restart

Pozostaje nam jeszcze dodać odpowiednie reguły do iptables:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE
#gdyby ostatnia linijka nie przechodziła można użyć tej (x.x.x.x to ip serwera):
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to x.x.x.x

Na koniec ustawiamy już na lokalnej maszynie openvpn:

cd /etc/openvpn
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf .

Korzystając z takich danych:

client
dev tun
proto tcp
remote xxx.xxx.xxx.xxx xxx #ip port
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
ca /etc/openvpn/ca.crt
cert /etc/openvpn/client1.crt
key /etc/openvpn/client1.key
ns-cert-type server
tls-auth /etc/openvpn/ta.key 1
comp-lzo
verb 3

Kopiujemy w odpowiednie miejsce client.crt, client.key, ca.crt, ta.key, startujemy:

openvpn /etc/openvpn/client.conf

Można też skonfigurować sobie vpna w gnome, potrzebne nam paczki to:

network-manager-openvpn network-manager-openvpn-gnome

Potem już tylko należy wyklikać te same dane w NM.

Opis konfiguracji telefonów z androidem w podał już Inzaghi89. Wpis bazowany na poradniku Uwe Hermann’a.