Jedno podejście do instalacji i konfiguracji OpenVPN na CentOS 6 już miałem. Jednakże, jak zauważył jeden z czytelników – wykorzystałem autoryzację PAM zamiast skorzystać z logowania za pomocą kluczy.
Przyznam, że miałem z tym trochę problemów, a zmobilizował mnie do tego Rafał we wpisie openvpn debian – nie dawało mi spokoju, że można to zrobić prościej i szybciej. Dać dostęp innym osobom bez tworzenia zbędnego użytkownika w systemie i podawani innym haseł.
Ok, do rzeczy.
Instalacja OpenVPN
yum install openvpn easy-rsa
Konfiguracja OpenVPN i Easy-RSA
cd /etc/openvpn/ mkdir easy-rsa cp -r /usr/share/easy-rsa/2.0/* easy-rsa/ cd easy-rsa/ vim vars
W pliku vars edytujemy linię export KEY_SIZE=1024 zmieniając wartość na np. 2048, lub paranoidalną 4096. Zapisujemy, wychodzimy.
. ./vars ./clean-all ./build-ca #generuje certyfikat SSL, dane uzupełniamy wg własnego "widzimisia" ./build-key-server server #generuje klucz serwera, dane wg "uznania" ./build-key client #podobnie jak wyżej ./build-dh #chwilę to potrwa
Następnie generujemy klucz publiczny:
openvpn --genkey --secret ta.key mv ta.key keys/
Przechodzimy do konfiguracji serwera OpenVPN. Tworzymy plik server.conf.
cd /etc/openvpn/ vim server.conf
A w nim zawieramy naszą konfigurację:
port xxxx #definiujemy port, na którym nasłuchiwać ma OpenVPN 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 dh /etc/openvpn/easy-rsa/keys/dhxxxx.pem #w zależności jaką wartość wpisaliśmy może być 1024, 2048, 4096 server 10.0.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 comp-lzo user nobody group nobody persist-key persist-tun log-append /var/log/openvpn/openvpn.log status /var/log/openvpn/status.log verb 3
Włączenie przekierowania ruchu
Bardzo ważne jest, by nasz serwer przekierowywał ruch.
vim /etc/sysctl.conf
Odnajdujemy linię
net.ipv4.ip_forward
i zamieniamy wartość 0, na 1. Ładujemy wprowadzone zmiany:
sysctl -p
Tworzenie reguł do iptables
Gwarantuję, że bez tego tunelowanie nie zadziała. Połączymy się z serwerem, ale na tym skończy się funkcjonalność VPNa – a przynajmniej u mnie tak to się skończyło. By wszystko działało jak należy – dla serwera na OpenVZ i zainstalowanym CSF tworzymy następujące reguły:
iptables -t nat -A POSTROUTING -o venet0 -j SNAT --to-source 123.456.789.12 iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source 123.456.789.12 iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT iptables -A FORWARD -j REJECT iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o venet0 iptables -t nat -A POSTROUTING -j SNAT --to-source 123.456.789.12
Po stronie serwera jest to już niemal wszystko. Potrzebujemy jeszcze skopiować plik z certyfikatem i zapisać zmiany w iptables.
Plik konfiguracyjny dla komputera
By móc się połączyć z serwerem potrzebujemy odpowiednio przygotowany plik konfiguracyjny. Zadziała zarówno na Windowsie jak i Androidzie.
client dev tun proto tcp remote 123.456.789.12 xxxx #ip port resolv-retry infinite nobind user nobody group nobody persist-key ca ca.crt cert client.crt #adres do klucza użytkownika key client.key #j/w ns-cert-type server tls-auth ta.key 1 comp-lzo verb 3
Zapisujemy w c:\Program Files\OpenVPN\config\ – tam również zapisujemy takie pliki jak: ca.crt, ta.key, client.crt i client.key. Wszystkie znajdują się w /etc/openvpn/easy-rsa/keys.
Start OpenVPN:
service openvpn start
Dodaj komentarz