V návode popíšem ako nakonfigurovať VPN server a ako nakonfigurovať klienta. Návod je písaný pre serverovú edíciu Ubuntu 14.04, ale použiť je ho možné aj na iné distribúcie občas s drobnými zmenami. VPN klient bude v tomto prípade konfigurovaný v prostredí Windows a Linux. Na VPN som si zvolil program OpenVPN, autentifikácia je riešená vygenerovanými certifikátmi a kľúčmi.
Tento návod je určený skôr pre pokročilých užívateľov. Jedná sa totiž o komplikovanejšiu tému pri ktorej musí mať užívateľ aspoň základný prehľad o fungovaní sietí. Je to návod, v ktorom popíšem ako nakonfigurovať VPN, čo je virtuálna privátna sieť (Virtual Private Network). VPN je sieť, ktorá umožňuje rozšírenie privátnej siete po verejnej sieti napr. internete, pomocou tunelu. Komunikácia cez tento tunel je pritom šifrovaná. Používa sa to hlavne vo firemných sieťach, do ktorých prístup z internetu nie je možný, ale ak máte VPN klienta a prístupové heslá resp. certifikáty, môžete sa do tejto siete dostať aj napríklad z domu.
Pre tento prípad budem mať server s nasledovnými parametrami siete:
IP adresa: 95.85.17.11
Maska siete: 255.255.255.0
Brána (Gateway): 95.85.17.1
Sieť: 95.85.17.0
Broadcast: 95.85.17.255
Klient bude mať dynamickú adresu pridelenú DHCP serverom z rozsahu:
95.85.17.20. až 95.85.17.100
1 Konfigurácia servera
1.1 Inštalácia bridge-utils
1.2 Konfigurácia sieťového rozhrania
1.3 Inštalácia OpenVPN
1.4 IPv4 Forwarding
1.5 Vygenerovanie serverových kľúčov
1.6 Vygenerovanie klientských certifikátov
1.7 Vytvorenie skriptov
1.8 Konfigurácia OpenVPN
1.9 iptables
1.10 Reštart
2 Konfigurácia klienta vo Windows
2.1 Stiahnutie a inštalácia OpenVPN klienta
2.2 Inštalácia TAP adaptéru
2.3 Úprava konfigurácie
2.4 Nakopírovanie certifikátov a kľúčov
2.5 Pripojenie k serveru
3 Konfigurácia klienta v Linux
3.1 Stiahnutie a inštalácia OpenVPN klienta
3.2 Úprava konfigurácie
3.3 Nakopírovanie certifikátov a kľúčov
3.4 Pripojenie k serveru
4 Test pripojenia
1 Konfigurácia servera
Potrebujete konzolový prístup na server, napríklad SSH a heslo na Root užívateľa resp. sudo práva.
1.1 Inštalácia bridge-utils
Tento krok je relatívne jednoduchý, bridge-utils byva vo vacsine standardnych repozitárov, takže stačí zadať do konzoly príkaz:
sudo apt-get install bridge-utils
1.2 Konfigurácia sieťového rozhrania
Následne je nutné nakonfigurovať sieťové rozhrania na servery, tzv. interfaces:
sudo nano /etc/network/interfaces
Takto vyzerá môj súbor interfaces:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
#iface eth0 inet static
# address 95.85.17.11
# netmask 255.255.255.0
# gateway 95.85.17.1
# dns-nameservers 8.8.4.4 8.8.8.8 209.244.0.3
# bridge_ports eth0
auto br0
iface br0 inet static
address 95.85.17.11
netmask 255.255.255.0
gateway 95.85.17.1
network 95.85.17.0
broadcast 95.85.17.255
dns-nameservers 8.8.4.4 8.8.8.8 209.244.0.3
bridge_ports eth0
iface eth0 inet manual
up ifconfig $IFACE 0.0.0.0 up
up ip link set $IFACE promisc on
dns-nameservers 8.8.4.4 8.8.8.8
down ip link set $IFACE promisc off
down ifconfig $IFACE down
Obr. 1: interfaces.
Upravte údaje v interface br0, čo je bridge, podľa parametrov vašej siete. Jedná sa o sieť, ktorou sa server pripája do internetu. Takže treba upraviť: address, netmask, gateway, network, broadcast. Za znakom mriežky (#) sa nachádzajú komentáre.
Uložte súbor, v editore Nano je to kombinácia kláves Ctrl+O a následne ho zavrite klávesou Ctrl+X. Treba ale dávať pozor na správnu konfiguráciu v tomto súbore, pretože sa môže stať, že keď ho nesprávne nakonfigurujete, server sa nebude schopný pripojiť na sieť a ak sa jedná o virtuálny server kdesi v inej krajine, je možné, že sa k nemu už nepripojíte. Preto odporúčam zálohovať si ideálne celý server vytvorením snapshotu.
1.3 Inštalácia OpenVPN
Samotná inštalácia je opäť jednoduchá. Stačí zadať príkaz:
sudo apt-get install openvpn
1.4 IPv4 Forwarding
Keďže chceme v našom prípade umožniť VPN klientom prístup na sieť mimo serveru, teda internet, musíme zapnúť preposielanie IPv4 paketov. Editujte teda súbor:
nano /etc/sysctl.conf
A odkomentujte nasledovný riadok:
net.ipv4.ip_forward=1
Po tomto kroku je nutný reštart serveru alebo siete príkazom sysctl -p. Ale stačí, keď server reštartujeme až po ukončení všetkých krokov.
Obr. 2: IPv4 Forwarding.
1.5 Vygenerovanie serverových kľúčov
Budeme potrebovať vygenerovať kľúče.
Ak máte verziu Ubuntu 12.04:
sudo mkdir /etc/openvpn/easy-rsa/
sudo cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
sudo chown -R $USER /etc/openvpn/easy-rsa/
Namiesto $USER zadajte login vášho užívateľa napr. Jozko. V tomto kroku v podstate vytvárame nový priečinok a kopírujeme do neho predpripravené príklady.
Ak máte verziu Ubuntu 14.04:
apt-get install easy-rsa
make-cadir /etc/openvpn/easy-rsa
Ďalej si potrebujeme predpripraviť premenné pre kľúče a certifikáty, ktoré budeme generovať. Editujte teda súbor:
sudo nano /etc/openvpn/easy-rsa/vars
Nájdite v súbore pramater KEY_CONFIG a zmeňte tento riadok nasledovne:
export KEY_CONFIG=/etc/openvpn/easy-rsa/openssl-0.9.6.cnf
Obr. 3: export KEY_CONFIG.
V ďalších parametroch si už môžete vypísať údaje k vlastnému certifikátu. Upravte teda hodnoty nasledovných parametrov, podľa vašej chuti (meňte len údaje v úvodzovkách):
export KEY_COUNTRY=”SR”
export KEY_PROVINCE=”BA”
export KEY_CITY=”Bratislava”
export KEY_ORG=”itnavody”
export KEY_EMAIL=”info@itnavody.sk”
Obr. 4: export KEYs.
Konečne môžeme pristúpiť k samotnému generovaniu. Zdajte tieto príkazy:
cd /etc/openvpn/easy-rsa/
source vars
./clean-all
Tým máme adresár pripravený a vyčistený. Postupne zadajte tieto príkazy:
./build-dh
./pkitool –initca
./pkitool –server server
Chvíľu to potrvá, tak si zatiaľ spravte kávu/čaj/kakavko.
Potom choďte do nového priečinku keys a vygenerujte ešte jeden kľúč:
cd keys
openvpn –genkey –secret ta.key
Všetko čo sa vám vygenerovalo skopírujte do priečinku /etc/openvpn, napríkald týmto príkazom:
sudo cp server.crt server.key ca.crt dh2048.pem ta.key /etc/openvpn/
1.6 Vygenerovanie klientských certifikátov
Teraz potrebujeme vygenerovať certifikáty pre klientov. Opäť choďte do priečinku easy-rsa a pripravte vars skript:
cd /etc/openvpn/easy-rsa/
source vars
Potom už len vygenerovať certifikát pre klienta:
./pkitool klient
Slovo klient môžete nahradiť ľubovoľným textom, napr. ./pkitool Ferko. Vzniknú vám teda nasledovné súbory:
/etc/openvpn/ca.crt
/etc/openvpn/ta.key
/etc/openvpn/easy-rsa/keys/klient.crt
/etc/openvpn/easy-rsa/keys/klient.key
Tieto súbory musíte preniesť na klienta. Bez nich sa klient nebude môcť pripojiť.
Každý klient by mal mať vlastný kľúč a certifikát. Ak budú mať dvaja klienti rovnaký kľúč, môže to spôsobovať odpájanie jedného alebo druhého, prípadne timeouty spojenia.
1.7 Vytvorenie skriptov
Ďalším krokom je vytvorenie dvoch jednoduchých skriptov na zapnutie a vypnutie VPN servera. Zadajte príkaz:
nano /etc/openvpn/up.sh
Otvorí sa vám prázdny dokument, napíšte do neho nasledovné:
#!/bin/sh
BR=$1
DEV=$2
MTU=$3
/sbin/ifconfig $DEV mtu $MTU promisc up
/sbin/brctl addif $BR $DEV
Obr. 5: Skript up.sh.
Potrebujeme ešte vytvoriť jeden skript:
nano /etc/openvpn/down.sh
Vložte do neho:
#!/bin/sh
BR=$1
DEV=$2
/sbin/brctl delif $BR $DEV
/sbin/ifconfig $DEV down
Obr. 6: Skript down.sh.
Tieto skripty musíme nastaviť ako spustiteľné (executable). Príkazom:
sudo chmod 755 /etc/openvpn/down.sh
sudo chmod 755 /etc/openvpn/up.sh
1.8 Konfigurácia OpenVPN
Prvý krok pri samotnej konfigurácii je nakopírovanie sample-config z adresáru openvpn/examples. Napíšte teda príkaz:
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
Rozbaľte tento zip:
gzip -d /etc/openvpn/server.conf.gz
A otvorte súbor na editáciu v textovom editore:
nano /etc/openvpn/server.conf
V konfigu treba spraviť viacero úprav s odkomentovaním alebo zakomentovaním určitých riadkov. Riadky sa zakomentovávajú pomocou dvojbodky (;). Zmeny som uviedol do nasledovnej tabuľky.
1.9 iptables
Toto je jedna z tých vecí, ktorú snáď v žiadnom manuále nenájdete (okrem tohto 😉 ). A budete sa čudovať, prečo sa vám VPN klient nedokáže pretunelovať na internet, aj napriek tomu, že VPN spojenie je živé. Problém je v tom, že keď dáte dotaz na internetovú adresu napríklad google.com, tento prejde VPN tunelom až na google.com, ale odpoveď z google.com k vám už neprejde, pretože server nevie, ako má takýto paket preroutovať späť k vám a tak ho zahodí.
Riešením je:
iptables -t nat -A POSTROUTING -s 95.85.17.0/24 -o br0 -j MASQUERADE
Pričom 95.85.17.0 by mala byť IP adresa vašej siete, ktorá je na serveri. Týmto príkazom hovoríte, že packety určené pre túto sieť majú byť posielané na váš bridge interface br0.
Normálne sa iptables premazávajú vždy po reštarte servera. Aby bolo nastavenie trvalé, treba doinštalovať iptables-persistent:
sudo apt-get install iptables-persistent
A následne uložiť konfiguráciu iptables (zápis do súboru /etc/iptables/rules.v4):
iptables-save
1.10 Reštart
Konečne nadišiel ten čas reštartovať. Zadajte teda príkaz:
reboot
Pozor, ak máte niečo neuložené alebo rozrobené na serveri, nezabudnite si to predtým uložiť!
2 Konfigurácia klienta vo Windows
2.1 Stiahnutie a inštalácia OpenVPN klienta
Stiahnite si OpenVPN client pre vašu verziu Windows zo stránky:
https://openvpn.net/index.php/open-source/downloads.html
Stiahnutý Setup musíte sustiť ako administrátor. Pravé tlačítko a Run as administrator.
2.2 Inštalácia TAP adaptéru
Po nainštalovaní klienta vám v priečinku Program Files vznikne nový priečinok TAP-Windows.
Spustite program, ale opäť ako administrator:
c:\Program Files\TAP-Windows\bin\addtap.bat
Keď ste na tento addtap.bat súbor už raz klikli a tým ho spustili, neklikajte naň viac-krát. Otvorte sieťové adaptéry vo Windows a mal by vám tam pribudnúť nový TAP-Windows adapter.
Obr. 7: Súbor addtap.bat.
Obr. 8: TAP adaptér.
2.3 Úprava konfigurácie
Ďalším krokom je úprava konfigurácie. Ak ste nemenili cestu, kam sa má OpenVPN client nainštalovať, skopírujte súbor:
c:\Program Files\OpenVPN\sample-config\client.ovpn
do
c:\Program Files\OpenVPN\config\
V tomto súbore treba následne spraviť pár zmien obdobne ako sme to robili pri serverovej konfigurácii. Otvorte teda súbor client.ovpn v textovom editore a upravte ho podľa nasledovnej tabuľky.
Riadky sa zakomentovávajú pomocou dvojbodky (;).
Po úpravách súbor uložte a zavrite.
2.4 Nakopírovanie certifikátov a kľúčov
Do adresára c:\Program Files\OpenVPN\config\ nakopírujte súbory z bodu 1.6 tohto manuálu. Takže:
ca.crt
klient.crt
klient.key
ta.key
Obr. 9: Priečinok OpenVPN/config.
2.5 Pripojenie k serveru
Ak máte dokončené všetky predchádzajúce kroky, môžete sa pripojiť. Spustite OpenVPN GUI, ktorý vám vznikol v Start Menu, ale opäť ako administrator. Následne sa vám v pravo dole pri hodinách objaví nová ikona, kliknite na ňu pravým tlačítkom a vyberte možnosť Connect. Zobrazí sa vám statusové okno a ak ste spravili všetko dobre, v priebehu pár sekúnd by ste mali byť pripojený na VPN a ikonka by mala zozelenať.
Obr. 10: Pripojenie k VPN.
3 Konfigurácia klienta v Linux
3.1 Stiahnutie a inštalácia OpenVPN klienta
Najjednoduchší spôsob ako stiahnuť a nainštalovať OpenVPN klienta na Linuxovej mašine je zobrať ho priamo z repozitárov. A teda:
sudo apt-get install openvpn
3.2 Úprava konfigurácie
Úprava konfigurácie je obdobná ako vo Windows.
Skopírujte súbor:
/usr/share/doc/openvpn/examples/sample-config-files/client.conf
do ľubovoľného priečinku, napr. do:
/Documents
A premenujte ho na client.ovpn.
Tento konfiguračný súbor následne upravte podľa nasledovnej tabuľky (ak už máte konfiguračný súbor napríklad z Windows klienta, môžete použiť priamo ten):
Riadky sa zakomentovávajú pomocou dvojbodky (;).
Po úpravách súbor uložte a zavrite.
3.3 Nakopírovanie certifikátov a kľúčov
Do rovnakého priečinku, ako ste skopírovali súbor client.ovpn, skopírujte aj súbory zo serveru z bodu 1.6 tohto manuálu. Takže:
ca.crt
klient.crt
klient.key
ta.key
3.4 Pripojenie k serveru
Teraz stačí sa už len pripojiť. Napíšte do konzoly:
cd /Documents
openvpn ??config client.ovpn
Mali by ste vidieť výpis o úspešnom pripojení na server.
4 Test pripojenia
Ak ste sa s klientom úspešne pripojili na server, stačí už len otestovať pripojenie. Po úspešnom pripojení k VPN väčšinou treba chvíľu počkať, cca 1-2 minúty, kým si Windows uvedomí, že má komunikovať cez VPN. Najjednoduchší test VPN spojenia je trace route, čiže vlastne sledovanie cesty vášich IP paketov.
Vo Windows otvorte príkazový riadok cmd. A napíšte príkaz:
tracert 8.8.8.8
Obr. 11: Tracert.
V Linux-e otvorte terminál. A napíšte príkaz:
traceroute 8.8.8.8
Ak bude prvý skok (hop) váš server, VPN vám funguje a teda internetové dáta odchádzajúce z vášho PC sú šifrované. Okrem toho, že dáta sú šifrované to má aj tú výhodu, že ak váš internetový provider blokuje niektoré webové stránky, s VPN sa na ne dostanete.