Uživatelské nástroje

Nástroje pro tento web


navody:openvpn

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

navody:openvpn [2012/12/22 13:24] (aktuální)
Řádek 1: Řádek 1:
 +====== OpenVPN ======
 +[[http://​openvpn.net/​|OpenVPN]] je open source program pro vytvoření VPN tunelu mezi hostitelskými stanicemi.
 +Stáhnout lze [[http://​openvpn.net/​index.php/​download.html|zde]]. Běží jak na UNIXových OS, tak ve Windows.
 +Linuxové distribuce ho mají obvykle v repozitářích.
 +===== Server =====
 +==== Instalace ====
 +Archlinux
 +  pacman -S openvpn
 +Fedora
 +  yum install openvpn
 +==== Konfigurace certifikační autority ====
 +V souboru /​usr/​share/​openvpn/​easy-rsa/​vars nastavit následující informace o certifikační autoritě. Je lepší nepoužívat diakritiku.
 +  export KEY_COUNTRY="​CZ"​
 +  export KEY_PROVINCE="​Kraj" ​
 +  export KEY_CITY="​Mesto"​
 +  export KEY_ORG="​Organizace"​
 +  export KEY_EMAIL="​muj@email.cz"​
 +délku klíče nastavit na 2048 bitů
 +  export KEY_SIZE=2048
 +ostatní proměnné KEY_* je možné zakomentovat
 +  #export KEY_EMAIL=mail@host.domain
 +  #export KEY_CN=changeme
 +  #export KEY_NAME=changeme
 +  #export KEY_OU=changeme
 +==== Vytvoření certifikační autority ====
 +adresář ''/​usr/​share/​openvpn/​easy-rsa/''​
 +  $ cd /​usr/​share/​openvpn/​easy-rsa/​
 +export proměnných
 +  $ source ./vars
 +smazání všech předchozích certifikátů a klíčů
 +  $ ./clean-all
 +vytvoření certifikační autority, Všechny otázky je možné odentrovat, protože se nastaví podle exportovaných proměnných. ​
 +  $ ./build-ca
 +==== Generování klíčů a certifikátů ====
 +generování parametrů pro Diffie-Hellman
 +  $ ./build-dh
 +generování klíče a certifikátu pro server, jméno serveru musí být unikátní
 +  $ ./​build-key-server jmeno_serveru
 +generování klíče a certifikátu pro klienta
 +  $ ./​build-key-server jmeno_klienta
 +  ​
 +==== Konfigurace ====
 +nastavení se dělá v souboru ''/​etc/​openvpn/<​nazev serveru>​.conf''​
 +  # openvpn běží v modě server
 +  mode server
 +  ​
 +  # tento počítač je server
 +  tls-server
 +  ​
 +  # zařízení,​ které se vytvoří
 +  dev tap0
 +  ​
 +  # port
 +  port 1194
 +  ​
 +  # protokol
 +  proto udp
 +  ​
 +  # adresa serveru ve virtuální síti
 +  ifconfig 192.168.2.1 255.255.255.0
 +  ​
 +  # konfigurační parametry, které se pošlou klientovi
 +  push "route 192.168.1.0 255.255.255.0"​
 +  push "​route-gateway 192.168.2.1"​
 +  ​
 +  # adresy, které se budou přidělovat klientům
 +  ifconfig-pool 192.168.2.10 192.168.2.50 255.255.255.0
 +  ​
 +  # více klientů se může přihlásit naráz
 +  duplicate-cn
 +  ​
 +  # upravuje komunikaci klienta s klientem - paket odešle ihned OpenVPN démon
 +  client-to-client
 +  ​
 +  # certifikát certifikační autority
 +  ca ca.crt
 +  ​
 +  # certifikát serveru
 +  cert VPN-Server.crt
 +  ​
 +  # klíč serveru
 +  key VPN-Server.key
 +  ​
 +  # parametry pro Diffie-Hellman
 +  dh dh2048.pem
 +  ​
 +  # povolení komprese
 +  comp-lzo
 +  ​
 +  # soubor, kam ukládá server pravidelně svůj stav
 +  log-append /​var/​log/​vpn.log
 +  ​
 +  # stupeň "​ukecanosti"​ démona
 +  verb 3
 +potřebné klíče a certifikáty je nutné zkopírovat z ''/​usr/​share/​openvpn/​easy-rsa/​keys/''​ do ''/​etc/​openvpn/''​
  
 +aby server fungoval, je potřeba povolit port ''​1194''​ v ''​iptables''​
 +  iptables -A INPUT -p udp --dport 1194 -j ACCEPT
 +  iptables -A OUTPUT -p udp --sport 1194 -j ACCEPT
 +
 +==== Konfigurace - bridge mode ====
 +pro vytvoření bridge je třeba nainstalovat ''​bridge-utils'',​ ve feodře
 +  yum install bridge-utils
 +
 +konfigurační soubor může vypadat následovně
 +<​code>​
 +server-bridge <adresa serveru> <maska sítě> <první adresa přidělovaná serverem>​ <​poslední adresa přidělovaná serverem>​
 +tls-server
 +dev tap0
 +port 1194
 +proto udp
 +ifconfig-pool-persist ipp.txt
 +duplicate-cn
 +client-to-client  ​
 +ca ca.crt
 +cert VPN-Server.crt
 +key VPN-Server.key
 +dh dh2048.pem  ​
 +comp-lzo
 +log-append /​var/​log/​vpn.log
 +verb 3
 +</​code>​
 +
 +skript, který nastaví potřebná rozhraní
 +<​code>​
 +#!/bin/bash
 +
 +### BEGIN INIT INFO
 +# Provides: ​            ​bridge
 +# Required-Start: ​      ​$remote_fs $syslog
 +# Required-Stop: ​       $remote_fs $syslog
 +# Default-Start: ​       2 3 4 5
 +# Default-Stop:​
 +# Short-Description: ​   Bridge for OpenVPN
 +### END INIT INFO
 +
 +# Define Bridge Interface
 +br="​br0"​
 +# Define list of TAP interfaces to be bridged,
 +# for example tap="​tap0 tap1".
 +tap="​tap0"​
 +# Define physical ethernet interface to be bridged
 +# with TAP interface(s) above.
 +eth="<​fyzicky interface>"​
 +eth_ip="<​adresa serveru>"​
 +eth_netmask="<​sitova maska>"​
 +eth_broadcast="<​broadcastova adresa>"​
 +gw="<​adresa brany>"​
 +
 +#################################​
 +# Set up Ethernet bridge on Linux
 +# Requires: bridge-utils
 +#################################​
 +start_bridge () {
 +    for t in $tap; do
 +        openvpn --mktun --dev $t
 +    done
 +
 +    brctl addbr $br
 +    brctl addif $br $eth
 +    for t in $tap; do
 +        brctl addif $br $t
 +    done
 +
 +    for t in $tap; do
 +        ifconfig $t 0.0.0.0 promisc up
 +    done
 +    ifconfig $eth 0.0.0.0 promisc up
 +    ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast up
 +    route add default gw $gw $br
 +}
 +
 +####################################​
 +# Tear Down Ethernet bridge on Linux
 +####################################​
 +stop_bridge () {
 +    ifconfig $br down
 +    brctl delbr $br
 +    for t in $tap; do
 +        openvpn --rmtun --dev $t
 +    done
 +    ifconfig $eth $eth_ip netmask $eth_netmask broadcast $eth_broadcast up
 +    route add default gw $gw $eth
 +}  ​
 +                                                                                                                                                                                                                ​
 +####################################​
 +# OPTIONS
 +###################################​
 +case "​$1"​ in
 +    start)
 +        echo -n "​Starting Bridge"​
 +        start_bridge
 +        ;;
 +    stop)
 +        echo -n "​Stopping Bridge"​
 +        stop_bridge
 +        ;;
 +    restart)
 +        stop_bridge
 +        sleep 2
 +        start_bridge
 +        ;;
 +    *)
 +        echo "​Usage:​ $0 {start|stop|restart}"​
 +        exit 1
 +        ;;
 +esac
 +</​code>​
 +
 +v iptables je potřeba nastavit následující pravidla
 +  iptables -I INPUT -i tap+ -j ACCEPT
 +  iptables -I INPUT -i br0 -j ACCEPT
 +  iptables -I FORWARD -i br0 -j ACCEPT
 +
 +skript jsem nastavil aby se spouštěl v ''/​etc/​rc.d/​rc.local''​. Trochu byl problém, když jsem nastavoval statický adresy pro eth0. Po tom co jsem tuto volbu smazal z ''/​etc/​sysconfig/​network-scripts/​ifcfg-eth0''​ tak vše beželo jak mělo.
 +==== Povolení openVPN se systemd ====
 +
 +  systemctl enable openvpn@.service
 +  ln -s /​lib/​systemd/​system/​openvpn\@.service /​etc/​systemd/​system/​multi-user.target.wants/​openvpn\@<​nazev serveru>​.service
 +  systemctl start openvpn\@<​nazev serveru>​.service
 +  systemctl enable openvpn\@<​nazev serveru>​.service
 +==== Směrování ====
 +Aby se pakety přeposílaly mezi sítěmi, je třeba nastavit přeposílání mezi interfacy
 +  echo 1 > /​proc/​sys/​net/​ipv4/​ip_forward
 +nebo permanentně nastavit v souboru ''/​etc/​sysctl.conf''​
 +  net.ipv4.ip_forward=1
 +  ​
 +Na routeru je třeba nastavit statickou cestu pro virtuální síť ''​192.168.2.0/​24''​ na adresu serveru např. ''​192.168.1.1''​. Jinak by router nedoručil pakety, které přichází zpět jako odpověď.
 +===== Klient =====
 +==== Linux ====
 +nastavení OpenVPN klienta
 +  # adresa serveru
 +  remote 192.168.1.1
 +  ​
 +  # vyžaduje ověření certifikátu serveru - zabraňuje útoku men in the middle
 +  remote-cert-tls server
 +  ​
 +  # tento počítač je klient
 +  tls-client
 +  dev tap
 +  ​
 +  # povoluje použít nastavení z push
 +  pull
 +  ​
 +  mute 10
 +  ca ca.crt
 +  cert klient.cert
 +  key klient.key
 +  ​
 +  comp-lzo
 +  verb 3
 +  ​
 +==== Windows ====
 +Pro Windows je možné spustit OpenVPN GUI, které zobrazí tray ikonu. Pravým kliknutím na ni je možné měnit stav klienta.
 +
 +Konfigurační soubory se umisťují do adresáře ''​c:​\Program Files\OpenVPN\config\''​.
 +V konfiguračním souboru je nutné každé zpětné lomítko z cesty zdvojit, jinak je konfigurační soubor stejný jak v Linuxu.
 +
 +Umístění certifikátu certifikační autority se napíše například takto:
 +  ca "​c:​\\Program Files\\OpenVPN\\config\\ca.crt"​
 +  ​
 +==== Směrování ====
 +Pokud chceme aby veškerý provoz šel přes VPN server je potřeba, aby bylo správně nastavené směrování.
 +Komunikaci se serverem na adresu ''​192.168.1.1''​ musí jít přes fyzický interface a pak je možné nastavit defaultní cestu přes virtuální síť.
 +
 +Ve Windows je to možné nastavit například takto:
 +  route add 192.168.1.1 mask 255.255.255.255 <​původní default gateway> metric 20
 +  route delete 0.0.0.0
 +  route add 0.0.0.0 mask 0.0.0.0 192.168.2.1 metric 20
navody/openvpn.txt · Poslední úprava: 2012/12/22 13:24 (upraveno mimo DokuWiki)