Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Následující verze | Předchozí verze | ||
| infrastruktura:vpn:softether [09.03.2026 20:24] – Migrace z it:software:softether, oprava odkazů na média. Petr Nosek | infrastruktura:vpn:softether [23.04.2026 12:56] (aktuální) – Doplnění detailů o chybě -m64 na ARM: plný výpis chyby, konkrétní proměnné v Makefile, poznámka k aktualizaci Petr Nosek | ||
|---|---|---|---|
| Řádek 1: | Řádek 1: | ||
| ====== SoftEtherVPN ====== | ====== SoftEtherVPN ====== | ||
| - | Popis instalace mám uvedený na [[https://petrnosek.cz/softether-vpn-instalace-kompilace-a-udrzovani-aktualizaci/|blogu]]. Tady uvedu kratší | + | [[https://www.softether.org/|SoftEther VPN]] je multiplatformní VPN server |
| - | Před kompilací | + | ===== Instalace a kompilace serveru ===== |
| + | |||
| + | Při první instalaci | ||
| + | |||
| + | Potřebné balíčky: | ||
| <code bash> | <code bash> | ||
| Řádek 9: | Řádek 13: | ||
| </ | </ | ||
| - | 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. | + | Stabilní větev lze stáhnout z [[https:// |
| - | <code bash> | + | |
| - | git clone https:// | + | |
| - | cd SoftEtherVPN | + | |
| - | git submodule update --init --recursive | + | |
| - | ./ | + | |
| - | make -C build | + | |
| - | make -C build install | + | |
| - | </ | + | |
| - | Instalace stabilní verze je přes tento postup: | ||
| <code bash> | <code bash> | ||
| git clone https:// | git clone https:// | ||
| Řádek 28: | Řádek 23: | ||
| </ | </ | ||
| - | Když budu chtít aktualizovat kód, tak jednoduše aktualizuji před dalšími kroky git a smažu | + | ==== 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./ | ||
| + | cc: error: unrecognized command line option ' | ||
| + | make: *** [Makefile: | ||
| + | </ | ||
| + | |||
| + | Příznak '' | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | Pokud při kompilaci | ||
| <code bash> | <code bash> | ||
| - | git pull | + | apt-get install libreadline-dev zlib1g-dev |
| - | make clean | + | |
| </ | </ | ||
| + | ===== Aktualizace SoftEther VPN ===== | ||
| - | Na závěr sekvence | + | Složku se zdrojáky si nechávám na serveru, aby šla aplikace průběžně aktualizovat |
| <code bash> | <code bash> | ||
| + | git pull | ||
| + | make clean | ||
| ./configure | ./configure | ||
| make | make | ||
| Řádek 44: | Řádek 58: | ||
| </ | </ | ||
| + | Konfigurační soubor serveru ''/ | ||
| - | SoftEther VPN je nainstalovaný v adresáři /usr. Je tam klient i server. Konfigurační soubor serveru | + | **Poznámka pro ARM:** Každé spuštění '' |
| + | ===== Fail2ban pro SoftEther ===== | ||
| - | Konfigurace server se po instalaci nachází ve složce **/ | + | Pokud je na serveru zapnutý [[infrastruktura: |
| - | + | ||
| - | Spustitelné soubory ve složce **/ | + | |
| ===== Konfigurace Ubuntu pro připojení VPN přes L2TP ===== | ===== Konfigurace Ubuntu pro připojení VPN přes L2TP ===== | ||
| Řádek 61: | Řádek 74: | ||
| </ | </ | ||
| - | V nastavení | + | V nastavení |
| + | |||
| + | 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ě ==== | ==== Nastavení privátní sítě ==== | ||
| - | |||
| - | And 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í, | ||
| {{.: | {{.: | ||
| Řádek 75: | Řádek 88: | ||
| {{.: | {{.: | ||
| - | And takto nastavení pod PPP Settings: | + | A takto nastavení pod PPP Settings: |
| {{.: | {{.: | ||
| - | Ještě jsem ručně nastavil bránu | + | Ruční nastavení brány |
| {{.: | {{.: | ||
| - | |||
| ==== Nastavení bridge ==== | ==== Nastavení bridge ==== | ||
| - | Toto nastavení | + | Toto nastavení |
| {{.: | {{.: | ||
| - | Tlačítko | + | IPsec Settings: |
| {{.: | {{.: | ||
| - | Tlačítko | + | PPP Settings: |
| {{.: | {{.: | ||
| - | Nastavení | + | IPv4 nastavení: |
| {{.: | {{.: | ||
| - | |||
| ===== Konfigurace Androidu pro připojení VPN přes L2TP ===== | ===== Konfigurace Androidu pro připojení VPN přes L2TP ===== | ||
| - | U Androidu | + | U starších verzí |
| - | + | ||
| - | Vše jsem řešil v nastavení sítě: **Síť a internet -> Síť VPN**. | + | |
| ==== Nastavení privátní sítě ==== | ==== Nastavení privátní sítě ==== | ||
| Řádek 115: | Řádek 123: | ||
| {{.: | {{.: | ||
| - | |||
| ==== Nastavení bridge ==== | ==== Nastavení bridge ==== | ||
| Řádek 122: | Řádek 129: | ||
| {{.: | {{.: | ||
| - | |||
| ===== Problém s Androidem 14 ===== | ===== Problém s Androidem 14 ===== | ||
| - | Při pokusu o přidání VPN sítě v Android | + | Na Androidu |
| - | + | ||
| - | * 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 | + | |
| - | + | ||
| - | Bohužel k datu 10.12.2023 nemá SoftEtherVPN implementovánu podporu pro IKEv2. Už vznikly první pokus o [[https:// | + | |
| - | + | ||
| - | 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. [[https:// | + | |
| - | + | ||
| - | Protože mám starší | + | |
| - | + | ||
| - | [[https:// | + | |
| - | + | ||
| - | + | ||
| - | Další možnou alternativou | + | |
| - | + | ||
| - | + | ||
| - | ==== 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 | + | |
| - | + | ||
| - | O tom píšou tyto články: | + | |
| - | + | ||
| - | * https:// | + | |
| - | * https:// | + | |
| - | * https:// | + | |
| - | * https:// | + | |
| - | + | ||
| - | 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ý. And 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): | + | |
| - | + | ||
| - | * 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/ | + | |
| - | * 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/ | + | |
| - | * 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 | + | |
| - | * Provedete NAT konfiguraci na serveru tak, aby překládal adresy z VPN rozsahu (192.168.235.0/ | + | |
| - | * 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/ | + | |
| - | + | ||
| - | 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: | + | V době psaní poznámek neměl SoftEther implementovanou podporu IKEv2. Sleduji proto tyto směry: |
| - | * 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. | + | |
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| - | V mém případě jdu cestou číslo 2 - NAT konfigurace VPN serveru. | + | ===== WireGuard a bridge poznámka ===== |
| - | Jak to funguje? | + | 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: |
| - | * Když se VPN klient připojí, získá IP adresu z rozsahu 192.168.235.0/24. | + | * [[https:// |
| - | * 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. | + | * [[https:// |
| - | * 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. | + | * [[https:// |
| - | * 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. | + | |
| + | ===== Zdroje ===== | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||