Obsah

SoftEtherVPN

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.

Instalace a kompilace serveru

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

Chyba -m64 na ARM serverech

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:

Pokud při kompilaci chybují knihovny, doinstalovat:

apt-get install libreadline-dev zlib1g-dev

Aktualizace SoftEther VPN

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.

Fail2ban pro SoftEther

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.

Konfigurace Ubuntu pro připojení VPN přes L2TP

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ě.

Nastavení privátní 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íť:

Nastavení bridge

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í:

Konfigurace Androidu pro připojení VPN přes L2TP

U starších verzí Androidu nebyl potřeba root telefonu. Všechno se řešilo přes Síť a internet → VPN.

Nastavení privátní sítě

Nastavení bridge

Problém s Androidem 14

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:

WireGuard a bridge poznámka

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:

Zdroje