SoftEther VPN je multiplatformní VPN server a klient, který umí více typů připojení včetně L2TP/IPsec. Na této stránce mám praktické poznámky ke kompilaci a aktualizaci serveru na Linuxu i k připojování klientů z Ubuntu a Androidu.
Při první instalaci jsem narazil na to, že build potřebuje správné knihovny a že některé starší zdrojové větve dělaly problémy s parametrem -m64. Je proto dobré mít po ruce jak oficiální download stránku, tak aktuální dokumentaci build procesu.
Potřebné balíčky:
apt-get install libreadline-dev zlib1g-dev cmake build-essential pkg-config libsodium-dev
Stabilní větev lze stáhnout z SoftEtherVPN_Stable:
git clone https://github.com/SoftEtherVPN/SoftEtherVPN_Stable.git cd SoftEtherVPN_Stable ./configure make make install
Na ARM serverech se při kompilaci může objevit tato chyba:
cc -DNDEBUG -DVPN_SPEED -DUNIX -DUNIX_LINUX -DCPU_64 -D_REENTRANT -DREENTRANT -D_THREAD_SAFE -D_THREADSAFE -DTHREAD_SAFE -DTHREADSAFE -D_FILE_OFFSET_BITS=64 -I./src/ -I./src/Cedar/ -I./src/Mayaqua/ -O2 -fsigned-char -m64 -c src/Mayaqua/Cfg.c -o tmp/objs/Mayaqua/Cfg.o cc: error: unrecognized command line option '-m64' make: *** [Makefile:111: tmp/objs/Mayaqua/Cfg.o] Chyba 1
Příznak -m64 je specifický pro architekturu x86-64 a ARM kompilátor ho nezná. Řešením je editace vygenerovaného Makefile – odstranit -m64 ze čtyř proměnných:
OPTIONS_COMPILE_DEBUGOPTIONS_LINK_DEBUGOPTIONS_COMPILE_RELEASEOPTIONS_LINK_RELEASEPokud při kompilaci chybují knihovny, doinstalovat:
apt-get install libreadline-dev zlib1g-dev
Složku se zdrojáky si nechávám na serveru, aby šla aplikace průběžně aktualizovat přes Git. Postup byl:
git pull make clean ./configure make make install
Konfigurační soubor serveru /usr/vpnserver/vpn_server.config tím nebyl přepsaný. Důležité je, že se needituje ručně, ale přes nástroj vpncmd.
Poznámka pro ARM: Každé spuštění ./configure vygeneruje nový Makefile, který opět obsahuje příznak -m64. Na ARM serverech je proto nutné Makefile znovu upravit (viz výše) před každým spuštěním make.
Pokud je na serveru zapnutý fail2ban, jde SoftEther chránit i proti brute-force pokusům. Praktický postup mám rozepsaný tam, ale základ je v tom, že SoftEther musí logovat do jednoho stabilního souboru a fail2ban pak sleduje sec.log pro konkrétní VPN hub.
Nejprve je potřeba nainstalovat tyto balíčky:
sudo apt install network-manager-l2tp network-manager-l2tp-gnome
V nastavení sítě se pak přidá nové VPN připojení typu Layer 2 Tunneling Protocol (L2TP).
Konkrétní screenshoty a nastavení v této stránce zachovávám jako praktickou referenci k tomu, jak jsem měl řešené dva scénáře: oddělenou servisní síť a bridge do domácí sítě.
Takto vypadá nastavení pod tlačítkem IPsec Settings:
A takto nastavení pod PPP Settings:
Ruční nastavení brány a routingu pro servisní síť:
Toto nastavení jsem používal ve chvíli, kdy se měl počítač po VPN tvářit, jako by byl fyzicky v domácí síti.
IPsec Settings:
PPP Settings:
IPv4 nastavení:
U starších verzí Androidu nebyl potřeba root telefonu. Všechno se řešilo přes Síť a internet → VPN.
Na Androidu 14 už není k dispozici L2TP/IPsec PSK tak, jak jsem ho používal dřív. V praxi to znamená, že starší postupy pro SoftEther přestaly být na novém telefonu použitelné. Podle diskusí byla podpora L2TP/IPsec PSK odstraněna už od Androidu 13.
V době psaní poznámek neměl SoftEther implementovanou podporu IKEv2. Sleduji proto tyto směry:
U WireGuardu je problém v tom, že nativně řeší Layer 3, ne Layer 2 bridge. Pokud bych chtěl emulovat bridge, bylo by potřeba použít něco jako GRETAP nebo Geneve. K tomu jsem si odložil tyto odkazy: