Uživatelské nástroje

Nástroje pro tento web


OpenVPN

Tento návod nepopisuje, jak funguje obecné nastavení OpenVPN či jak vygenerovat certifikáty. To najdete na stránkách OpenVPN. Zde se nachází pouze detaily, jak OpenVPN zprovoznit na routeru Turris.

O VPN obecně si můžete přečíst v seriálu Správa linuxového serveru.

Tento návod popisuje, jak nastavit OpenVPN pokročilou cestou, tedy přes příkazovou řádku (buď přes SSH nebo sériovou linku).

Jednoduché nastavení OpenVPN pomocí několika kliknutí bude uvedeno v březnu 2017.

Možností, jak nastavit OpenVPN je několik, liší se různou mírou integrace do systému OpenWRT.

Nahrání certifikátů

Nehledě na použitou metodu či jestli nastavujete server nebo klienta, potřebujete na router nahrát certifikáty a klíče. Nejjednodušší je to pomocí scp. Vytvořte složku /etc/openvpn a umístěte soubory tam.

user@localmachine $ ssh root@192.168.1.1
root@192.168.1.1's password:
root@turris:~# mkdir /etc/openvpn
root@turris:~# exit
Connection to 192.168.1.1 closed
user@localmachine $ scp server.key server.crt ca.crt root@192.168.1.1:/etc/openvpn
root@192.168.1.1's password:

Bez podpory OpenWRT

  • + Nastavení je stejné, jako na jiných systémech.
  • + Největší flexibilita v předaných parametrech.
  • - Není navázané na spouštění a vypínání síťových rozhraní.
  • - Nelze zapínat a vypínat jako služba.

Tento způsob zcela obchází podporu v OpenWRT a služba je puštěna ručně. Dává to větší volnost v tom, jaké parametry se předají, na druhou stranu o službě zbytek systému neví a OpenVPN neví o změnách na síťových rozhraních. Toto může působit problémy s firewallem či routovacími tabulkami.

Konfigurační soubor nahrajte do složky /etc/openvpn stejným způsobem, jako klíče. Ručně vyzkoušejte, že vše funguje jak má:

# cd /etc/openvpn
# openvpn vpn.conf

Pokud příkaz zůstane běžet a nevypíše chyby, je pravděpodobně vše v pořádku. Ukončete jej pomocí CTRL+C a pusťte na pozadí.

openvpn vpn.conf >/dev/null 2>&1 &

Do souboru /etc/rc.local přidejte příkaz pro spuštění openvpn. Tento soubor je vyhodnocen při startu zařízení. Ujistěte se, že příkaz exit 0 je až na konci.

/etc/rc.local
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
 
openvpn /etc/openvpn/vpn.conf >/dev/null 2>&1 &
 
exit 0

S OpenVPN konfiguračním souborem

  • + Nastavení je stejné, jako na jiných systémech.
  • + Integruje se do systému, lze s tím zacházet jako se službou.
  • - Nelze předat libovolné parametry na příkazové řádce.

Začátek postupu je stejný, jako v případě Bez podpory OpenWRT. Místo ručního spuštění na pozadí a zapsání do /etc/rc.local je přidán odkaz na konfigurační soubor ze souboru /etc/config/openvpn.

/etc/config/openvpn
package openvpn
 
config openvpn custom_config
	option enabled 1
	option config /etc/openvpn/vpn.conf

Poté je potřeba OpenVPN zapnout a povolit jeho spouštění po startu.

$ /etc/init.d/openvpn start
$ /etc/init.d/openvpn enable

Konfigurace přes UCI

  • + Integruje se do systému.
  • + Lze nastavovat přes UCI příkazy.
  • - Konfigurační soubor je třeba přepsat do syntaxe UCI.

V tomto případě je celá konfigurace uložená jako UCI konfigurace, konfigurační soubor se do routeru nenahrává. Stále jsou však potřeba klíče a certifikáty.

V konfiguračním souboru /etc/config/openvpn vytvořte sekci a povolte ji pomocí option enabled 1. Poté každou položku v konfiguraci OpenVPN přepište jako jeden záznam option, následujícím způsobem:

  • Jméno je odvozeno od jména položky v OpenVPN konfiguraci.
  • Pomlčky ve jménu jsou nahrazeny podtržítkem.
  • Pokud se jedná o položku bez parametru, hodnota volby v UCI konfiguraci je 1.
  • Pokud je parametrů více, je třeba je všechny uzavřít do uvozovek.

Tyto konfigurace by tedy byly ekvivalentní.

/etc/config/openvpn
package openvpn
 
config openvpn lair
	option enabled 1
	option client 1
	option dev tun
	option proto udp
	option remote "1.2.3.4 82"
	option keepalive "10 1200"
	option nobind 1
	option ca "/etc/openvpn/ca.crt"
	option cert "/etc/openvpn/client.crt"
	option key "/etc/openvpn/client.key"
	option ns_cert_type server
	option comp_lzo yes
	option verb 3
/etc/openvpn/vpn.config
client
dev tun
proto udp
remote 37.157.194.139 3333
keepalive 10 1200
nobind
ca /etc/openvpn/ca.crt
cert /etc/openvpn/client.crt
key /etc/openvpn/client.key
ns-cert-type server
comp-lzo yes
verb 3

Výchozí konfigurační soubor obsahuje komentované příklady.

Tipy

Sekcí v UCI konfiguraci (ať již odkazují na OpenVPN konfigurační soubor nebo jsou převedeny do syntaxe UCI) je možné mít libovolně mnoho. Služba spustí oddělený openvpn proces pro každou, která je povolená pomocí option enabled 1.

Může se hodit zařadit VPN síť do sekce LAN ve firewallu. K tomu potřebujete rozhraní pojmenovat v /etc/config/network a rozhraní přidat do příslušné sekce v /etc/config/firewall. Poté restartujte obě služby. (/etc/init.d/network restart ; /etc/init.d/firewall restart).

/etc/config/network
config interface 'vpn'
        option proto none
        option ifname 'tun0'
        option auto 1
/etc/config/firewall
config zone
        option name             lan
        list   network          'lan'
	list   network          'vpn'
        option input            ACCEPT
        option output           ACCEPT
        option forward          ACCEPT