OpenVPN – propojení kanceláře a počítačů v terénu
Jako spousta firem využíváme služeb datacentra ve kterém máme servery a v kanceláři se snažíme mít minimum běžícího hardware. Prakticky jediné co si v kanceláři držíme je server na kterém běží virtuální stroje pro vývojáře. Kancelář je připojena do Internetu obyčejnou ADSL linkou s dynamicky přidělovanou IP adresou přes malý router, který natuje síť a slouží jako lokální DHCP.
Vývojáři občas potřebují přístup na své vývojové prostředí i z domova nebo od zákazníka, proto jsme zavedli vše propojili VPNkou.
Server v datacentru slouží jako VPN server ke kterému se připojuje jak kancelář tak i uživatelé ze svých počítačů pokud jsou mimo kancelář.
VPN používáme “routovanou” – má vlastní IP rozsah a síť kanceláře ve které je virtualizační server a jednotlivé virtuály na něm se routuje do VPNky.
VPN síť: 192.168.100.0/24
Kancelář: 172.31.100.0/24
Protože používáme v kanceláři “tupý” router, který neumožňuje provozovat OpenVPN přímo na sobě, navazuje VPN spojení náš virtualizační server.
Servery jsou linuxové – všude je distribuce CentOS. Klienti jsou směska různých linxových distribucí, MacOS X a Windows.
Všude používáme OpenVPN verze 2.X (nejčastěji je to 2.2)
VPN server
Kompletní konfigurace VPN serveru je v souboru /etc/openvpn/vpn.conf:
user nobody group nobody local neon port 1194 proto udp dev tun server 192.168.100.0 255.255.255.0 ca ca.pem cert vpnserver.pem key vpnserver.key dh dh2048.pem tls-auth ta-vpnserver.key 0 client-to-client comp-lzo persist-tun persist-key ifconfig-pool-persist ipp-vpn.txt client-config-dir ccd-vpn verb 3 keepalive 10 120 push "redirect-gateway def1" push "dhcp-option DNS 8.8.8.8" route 172.31.100.0 255.255.255.0 push "route 172.31.100.0 255.255.255.0" status-version 2 status /etc/openvpn/logs/vpn-status.log crl-verify /etc/openvpn/crl.pem
Soubory ta-vpnserver.key, dh2048.pem, ca.pem, vpnserver.pem, vpnserver.key a crl.pem jsou vytvořené pomocí sady skriptů easy-rsa dodávané s OpenVPN.
Kancelář
Pro “kancelářský” server je nutné vytvořit na VPN serveru záznam s individuální konfigurací routování. Do souboru /etc/openvpn/ccd-vpn/kancelar (název souboru odpovídá CN v certifikátu pro kancelářský server) zapište:
iroute 172.31.100.0 255.255.255.0
Naše kanclář používá síť 172.31.100.0/24. V konfiguraci VPN serveru (vpn.conf) pomocí direktiv route a push umožníme tuto síť routovat přes VPN. Konfigurace pro kancelářský server v souboru ccd-vpn/kancelar s iroute záznamem určuje, že se přes tohoto klienta bude daná síť routovat.
Konfigurace OpenVPN na kancelářském serveru je v souboru /etc/openvpn/vpn.conf:
cert kancelar.crt key kancelar.key client dev tun proto udp remote vpnserver.datacentrum.tld 1194 float resolv-retry infinite nobind persist-key persist-tun ca ca.crt tls-auth ta-vpnserver.key 1 comp-lzo verb 3 mute-replay-warnings
Certifikáty jsou zase generované easy-rsa skripty.
Po navázání VPN z kanceláře by měla na kancelářském serveru vypadat routovací tabulka nějak takhle:
[root@kancelar ~]# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 11.11.11.11 172.31.100.1 255.255.255.255 UGH 0 0 0 eth0 192.168.200.33 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 172.31.254.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.100.0 192.168.100.33 255.255.255.0 UG 0 0 0 tun0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 0.0.0.0 192.168.100.33 128.0.0.0 UG 0 0 0 tun0 128.0.0.0 192.168.100.33 128.0.0.0 UG 0 0 0 tun0 0.0.0.0 172.31.100.1 0.0.0.0 UG 0 0 0 eth0
Na straně VPN serveru v datacentru vypadá routovací tabulka následujícím způsobem:
192.168.201.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 11.11.11.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 172.31.100.0 192.168.100.2 255.255.255.0 UG 0 0 0 tun0 192.168.100.0 192.168.100.2 255.255.255.0 UG 0 0 0 tun0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 0.0.0.0 11.11.11.1 0.0.0.0 UG 0 0 0 eth0
Zvýrazněná řádky ukazují routy týkající se VPN.
Na kancelářském serveru je samozřejmě nutné zapnout forward packetů – v /etc/sysctl.conf nastavte:
net.ipv4.ip_forward = 1
a poté spusťte “sysctl -p”.
Uživatelé
Konfigurace VPN na straně uživatelů je prakticky stejná jako u kancelářského serveru:
client dev tun proto udp remote vpnserver.datacentrum.tld 1194 float resolv-retry infinite nobind user nobody group nogroup persist-key persist-tun ca ca.crt cert klient1.crt key klient1.key tls-auth ta-vpnserver.key 1 comp-lzo verb 3 mute-replay-warnings
Routovací tabulka potom vypadá následujícím způsobem (nelekněte se jiného formátování proti Linuxu, je to výpis z MacOS X):
dw1911:Configurations tsunami$ netstat -rn Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire 0/1 192.168.100.5 UGSc 1 0 tun0 default 172.31.100.1 UGSc 7 0 en1 default 172.20.10.1 UGScI 0 0 en3 11.11.11.11/32 172.31.100.1 UGSc 1 0 en1 127 127.0.0.1 UCS 0 0 lo0 127.0.0.1 127.0.0.1 UH 5 244943 lo0 128.0/1 192.168.100.5 UGSc 0 0 tun0 169.254 link#5 UCS 0 0 en1 172.20.10/28 link#10 UCS 0 0 en3 172.20.10.3 127.0.0.1 UHS 1 0 lo0 172.31.253/24 link#5 UCS 1 0 en1 172.31.100.1 54:e6:fc:b1:21:16 UHLWIi 2 266 en1 1188 172.31.100.103 127.0.0.1 UHS 0 0 lo0 172.31.100/24 192.168.100.5 UGSc 0 0 tun0 192.168.100 192.168.100.5 UGSc 0 0 tun0 192.168.100.5 192.168.100.6 UH 5 0 tun0