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
Skomentuj Czarek Anuluj pisanie odpowiedzi