Jak jsme si již minule řekli, OpenVPN umožňuje pracovat v několika režimech a nás dnes bude zajímat režim server a poté klient.
Server
̈́̈́Naším cílem bude nyní vytvořit OpenVPN server pro několik klientů. Spojení bude zabezpečené. Zde je návrh konfiguračního souboru, který si můžeme nazvat například server_ostrava.conf:
dev tap0
proto tcp-server
port 1194
mode server
server 192.168.0.0 255.255.255.0
status /tmp/vpn_ostrava.status
tls-auth /etc/openvpn/server_ostravä́/ta.key 0
keepalive 10 30
client-to-client
max-clients 6
verb 3
tls-server
dh /etc/openvpn/server_ostravä́/dh1024.pem
ca /etc/openvpn/server_ostravä́/ca.crt
cert /etc/openvpn/server_ostravä́/server.crt
key /etc/openvpn/server_ostravä́/server.key
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
Pokud někde v textu používám odkaz na složku například server_ostrava a neexistuje, je potřeba ji předem vytvořit - mkdir /etc/openvpn/server_ostrava....
Některé volby již známe z předchozího dílu a proto jen pro přehled uvádím některé další, u kterých je možné něco změnit...:
mode - určuje mód OpenVPN (server/client)
server - nastaví na jakém subnetu bude server fungovat
status - zapisuje svůj stav do souboru
tls-auth a tls-server - zabezpečí přenos (tls-auth má na konci 0 úmyslně, značí to server, u klientů je to 1)
keepalive - udržovací pakety, aby nepadalo spojení
max-clients - maximální počet připojených klientů
Nyní bude potřeba vygenerovat všechny certifikáty a vůbec vše, co se týká bezpečnosti. Budeme k tomu potřebovat OpenSSL a pro přímé generování použijeme easy-rsa. Jinak je samozřejmě možné použít přímo OpenSSL a vše vygenerovat ručně, ale proč, když se to dá usnadnit...
Většinou se easy-rsa bude nalézat v /usr/share/openvpn/easy-rsa, přejdeme tedy do tohoto adresáře:
cd /usr/share/openvpn/easy-rsa
Zde zeditujeme vars a upravíme informace o generovaných certifikátech a provedeme následující sadu příkazů:
. ./vars
./clean-all
./build-ca
POZOR, v prvním příkazu jsou opravdu dvě tečky. Další postup při generování certifikátů může vyžadovat doplnění korektních údajů do certifikátů a proto jim věnujte pozornost.
./build-key-server server
Nyní již můžeme vygenerovat přímo certifikáty určené koncovým uživatelům. Pouze doplníme název uživatele...:
./build-key klient1
./build-key klient2
Nakonec ješte provedeme tyto příkazy:
./build-dh
openvpn --genkey --secret ta.key
Nakopírujeme vzniklé certifikáty do adresáře /etc/openvpn/server_ostrava, nekopírujeme však certifikáty jednotlivých uživatelů.̈́
Klidně už můžeme spustit OpenVPN server a teď se vrhneme na konfiguraci klienta.
Klient
Konfigurace klienta již bude hračkou. Stačí pouze nakopírovat příslušné klientovy certifikáty, kam patří a použít návrh tohoto konfiguračního souboru a uložit jej jako například klient_ostrava.conf:
remote nasserver.nekde.na.internetu.cz
proto tcp-client
port 1194
dev tap
client
mute-replay-warnings
verb 3
persist-tun
persist-key
tls-auth ta.key 1
user nobody
group nogroup
tls-client
ca /etc/openvpn/client_ostrava/ca.crt
cert /etc/openvpn/client_ostrava/client.crt
key /etc/openvpn/client_ostrava/client.key
comp-lzo
Teď by už mělo fungovat spojení a klient by měl obdržet IP adresu skrze DHCP. Pokud se stále nedaří připojit, je dobré sledovat, co klient píše a provést tak úpravy.