Obsah

SoftEtherVPN

Popis instalace mám uvedený na blogu. Tady uvedu kratší a aktualizovanou verzi čerpající ze zdroje: https://github.com/SoftEtherVPN/SoftEtherVPN/blob/master/src/BUILD_UNIX.md

Před kompilací jsem musel zajistit, že mám nainstalované všechny potřebné knihovny - jinak při kompilaci dojde k chybě.

apt-get install libreadline-dev zlib1g-dev cmake build-essential pkg-config libsodium-dev

Dále jsem pokračoval ke stažení a kompilací zdrojového kódu. Později jsem zjistil, že takto jsem nainstaloval nestabilní (developerskou) verzi.

git clone https://github.com/SoftEtherVPN/SoftEtherVPN.git
cd SoftEtherVPN
git submodule update --init --recursive
./configure
make -C build
make -C build install

Instalace stabilní verze je přes tento postup:

git clone https://github.com/SoftEtherVPN/SoftEtherVPN_Stable.git
cd SoftEtherVPN_Stable
./configure
make
make install

Když budu chtít aktualizovat kód, tak jednoduše aktualizuji před dalšími kroky git a smažu předchozí kompilaci.

git pull
make clean

Na závěr sekvence příkazů pro kompilaci a instalaci:

./configure
make
make install

SoftEther VPN je nainstalovaný v adresáři /usr. Je tam klient i server. Konfigurační soubor serveru /usr/vpnserver/vpn_server.config není aktualizací nijak dotčen – byly aktualizovány binární soubory. A pro jistotu ještě zmíním, že konfigurační soubor serveru se needituje ručně, ale skrze vpn klienta /usr/vpncmd/vpncmd.

Konfigurace server se po instalaci nachází ve složce /usr/local/libexec/softether/vpnserver.

Spustitelné soubory ve složce /usr/local/bin.

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í si vyhledám síť a dám přidání nového VPN připojení a volím možnost Layer 2 Tunneling Protocol (L2TP) - Kompatibilní s L2TP VPN servery od Microsoftu a ostatních.

Nastavení privátní sítě

A poté se v síťovém nastavení desktopu objeví možnost konfigurace VPN. Přidám nové připojení a nejprve budu konfigurovat VPN síť, na které servisuji počítače. Počítače se k ní připojují, ovšem internet jedou ze své sítě. Jsou tedy v oddělené virtuální síti.

Takto vypadá nastavení pod tlačítkem IPsec Settings:

A takto nastavení pod PPP Settings:

Ještě jsem ručně nastavil bránu a směřování v rámci interní servisní sítě:

Nastavení bridge

Toto nastavení využívám ve chvíli, kdy se chci připojit do domácí sítě. Počítač se pak chová tak, jako by fyzicky byl v domácí síti.

Tlačítko IPsec Settings

Tlačítko PPP Settings

Nastavení IPv4:

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

U Androidu není potřeba root telefonu, aby bylo možné se připojit do VPN. Zejména tedy pokud jde o bridge.

Vše jsem řešil v nastavení sítě: Síť a internet → Síť VPN.

Nastavení privátní sítě

Nastavení bridge

Problém s Androidem 14

Při pokusu o přidání VPN sítě v Android 14 jsem narazil na problém. Je možné přidat pouze tyto typy VPN:

Takže výše uvedený postup nebude pro Android 14 fungovat. Zdá se, že tento problém už je od Android 13 a podle diskusí to vypadá, že podpora L2TP/IPSec PSK byla odstraněna.

Bohužel k datu 10.12.2023 nemá SoftEtherVPN implementovánu podporu pro IKEv2. Už vznikly první pokus o implementaci IKEv2. V diskusi jsem objevil, že se někdo ptá na licenci. To navazuje na žádost o implementaci IKEv2 do SoftEther. Vývojář ke konci k datu 31.října 2023 píše, že sice nemá moc času, ale začíná postupně se začleněním kódu.

Tak je zde reálná šance, že se podpora do IKEv2 do SoftEhter dostane, zůstává však otázkou, kdy to bude.

Hledal jsem možnosti, jak dostat VPN do nového telefonu. Tento článek dává slušný přehled o možnostech. Autor píše o projektu strongSwan, který by měl podporu IKEv2 mít implementovanou.

Protože mám starší jádro, tak mě bohužel patrně čeká kompilace jádra kvůli potřebným modulům.

Tady je projekt, který by měl pomoct s konfigurací, nicméně používá se s forkem Libreswan.

Další možnou alternativou na prozkoumání je WireGuard. To by znamenalo nainstalovat si aplikace WireGuard do telefonu a obejít tak problém s IKEv2.

WireGuard

U WireGuardu mám zase problém, že nelze nastavit VPN v režimu bridge, ale jako oddělená síť. WireGuard umí pouze Layer3. Aby bylo možné se připojit do sítě skrz Layer2, je potřeba použít GRETAP.

O tom píšou tyto články:

* https://notes.superlogical.ch/pages/note_wg/nolayer2/ * https://gist.github.com/zOrg1331/a2a7ffb3cfe3b3b821d45d6af00cb8f6 * https://www.abclinuxu.cz/poradna/linux/show/468903 * https://www.root.cz/clanky/tunelujeme-ethernet-pres-wireguard-pomoci-protokolu-geneve/

Zdá se, že tento přístup má své limity. První limit je v tom, že tak propojím pouze 2 zařízení a nějaký management více zařízení bude komplikovaný. A druhý - hlavní problém - že toto propojení se patrně nepodaří provést skrz Android aplikaci.

Problematika s L2TP a Android 14

Postupně jsem došel k závěru, že nemá smysl se snažit implementovat L2TP - tedy VPN přes Network Layer 2. Podpora byla vyřazena z Androidu a už se nevrátí.

Mít VPN v režimu bridge už není cesta. Cesta je implementace VPN skrze Network Layer 3 a použít například VPN Wireshark. Bude to fungovat tak, že po připojení do sítě VPN, budu mít jiný rozsah IP adres než v lokální síti. Abych se dostal do lokální sítě, mám tyto možnosti:

1. Routované VPN (s použitím Statických nebo Dynamických Rout):

2. NAT (Network Address Translation):

3. Split Tunneling:

4. Přístup k Specifickým Službám nebo Zařízením:

V mém případě jdu cestou číslo 2 - NAT konfigurace VPN serveru.

Jak to funguje?