it:software:softether

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.

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.

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

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:

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.

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:

  • IKEv2/IPSec MSCHAPv2
  • IKEv2/IPSec PSK
  • IKEv2/IPSec RS

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.

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.

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

  • V tomto případě, když se připojíte přes VPN, získáte IP adresu z rozsahu, který je určen pro VPN klienty (např. 192.168.235.0/24).
  • Na VPN serveru pak musíte nastavit routovací pravidla, která umožní komunikaci mezi sítí VPN klientů a vaší interní sítí (192.168.234.0/24).
  • To znamená, že VPN server bude fungovat jako router mezi dvěma sítěmi.

2. NAT (Network Address Translation):

  • Nečíslovaný seznamTato metoda spočívá v tom, že VPN server bude překládat IP adresy mezi VPN klienty a interní sítí.
  • Při použití NAT, mohou být všechna zařízení v interní síti viditelná pro VPN klienty, ale komunikace bude vypadat, jako by pocházela od VPN serveru.
  • Provedete NAT konfiguraci na serveru tak, aby překládal adresy z VPN rozsahu (192.168.235.0/24) na adresy interní sítě (192.168.234.0/24).
  • Toto se obvykle provádí pomocí iptables v Linuxu. Příklad pravidla by mohl být: iptables -t nat -A POSTROUTING -s 192.168.235.0/24 -o eth0 -j MASQUERADE, kde eth0 je síťové rozhraní připojené k interní síti.

3. Split Tunneling:

  • Split tunneling umožňuje, aby část provozu šla přes VPN a část mimo ni.
  • Můžete nastavit, aby veškerý provoz směřující do vaší interní sítě šel přes VPN, zatímco veškerý ostatní internetový provoz šel mimo VPN.
  • To umožňuje přístup k interním zdrojům bez zbytečného zatěžování VPN spojení.

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

  • Pokud potřebujete přistupovat pouze k některým konkrétním službám nebo zařízením v interní síti, můžete použít port forwarding nebo podobné techniky na VPN serveru.
  • Tímto způsobem můžete umožnit přístup k určitým službám (např. webový server, FTP, atd.) prostřednictvím VPN.

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

Jak to funguje?

  • Když se VPN klient připojí, získá IP adresu z rozsahu 192.168.235.0/24.
  • Když klient pošle požadavek na zařízení v interní síti (192.168.234.0/24), požadavek projde přes VPN server.
  • VPN server použije NAT k překladu adresy z VPN rozsahu na adresu v interní síti, takže požadavek vypadá, jako by pocházel z VPN serveru.
  • Odpověď od interního zařízení je poslána zpět na VPN server, který pak překládá adresu zpět a odesílá odpověď VPN klientovi.
  • it/software/softether.txt
  • Poslední úprava: 2023/12/10 15:35
  • autor: Petr Nosek