SoftEther: VPN jednoduše, rychle a se spoustou funkcí

Určitě znáte následující situaci: Připojíte se někde na Wi-Fi (z toho pohledu je úplně jedno jestli je zabezpečená nebo ne) a snažíte se připojit třeba na vzdálenou plochu nebo váš FTP server a ono nic. Ve většině případů narazíte na to, že firewall v síti blokuje odchozí porty kromě např. 80 a 443. Obejití tohoto omezení je velmi jednoduché - můžete využít protokol SSTP, který zjednodušeně připojení maskuje jako HTTPS, tedy po TCP/443 s SSL/TLS.

Protokol SSTP a další standartní VPN protokoly jsou samozřejmě součástí role Remote Access ve Windows Serveru již od pradávna, dnes se ale podíváme na server-klient řešení od třetí strany - SoftEther VPN.

Vyvinutý původně jako experimentální projekt univerzitou v Tsukubě, SoftEther nabízí spoustu profesionálních a občas i překvapivých a zajímavých funkcí navíc. Kromě toho, že je kompletně opensource, tak serverovou i klientskou část rozběhnete jak ve Windows, tak i na Linuxu (včetně ARMových procesorů, tudíž i na Raspberry) nebo Macu a dalších. Nabízí také doplňující funkce pro administrátory, jako je třeba centrální správa nebo generování konfigurace, ale o tom později.

Protokoly

Neplánuji zde zabíhat do podrobností a funkcionalit jednotlivých protokolů, ale jsou tu některé, o kterých bych se rád zmínil trošku podrobněji níže. Kromě již zmíněné implementace SSTP protokolu od Microsoftu, nabízí také implementaci OpenVPN, čímž podstatně dokáže zjednodušit konfiguraci samotného OpenVPN serveru, dále pak L2TP , což vám umožní připojovat se z většiny mobilních zařízení, tak i další zajímavé protokoly, na které se podíváme níže:

SoftEther VPN

Abychom měli nepořádek ve jménech, tak SoftEther nabízí dokonce i vlastní protokol - příhodně pojmenovaný SoftEther VPN. Pro využití tohoto protokolu musíte mít nainstalovaného klienta na stanicích. Tento protokol se podobá protokolu SSTP od Microsoftu (také využívá HTTPS po TCP/443), ale díky klientovi si vytvoří plnohodnotný "virtuální" síťový adaptér a veškerý traffic pak směřuje přes VPN, což je dobré, v případě kdy potřebujete využívat broadcastování, a tím pádem nabízí VPN na druhé síťové vrstvě (Layer 2).

VPN over DNS/ICMP

Další, a tento (aspoň pro mě) nově objevený protokol mě opravdu zaujal. Představíte-li si situaci, že jste připojeni na Wi-Fi, kde po vás chce captive portál jméno a heslo, nebo třeba zaplatit (např. v letadlech), můžete se ho pokusit obejít! Tento protokol umožňuje maskovat síťovou komunikaci jako komunikaci s DNS serverem (skrze router, ISP DNS apod.) nebo jako ICMP komunikaci. Prakticky se jedná o využití toho, že firewall sice blokuje veškerou komunikaci od klienta, dokud se nějakým způsobem neautorizuje, ale většinou je možné resolvovat třeba DNS záznamy a toho právě tento protokol využívá.

VPN Azure

Poslední protokol, který zmíním je VPN Azure - noční můra správců ( pozor neplést s funkcionalitou VPN v rámci Azure Virtual Network, což je samozřejmě naprosto skvělý produkt ). Pokud třeba síť neumožňuje externí přístup (používáte SoftEther VPN server za firewallem) můžete si pomocí této funkcionality udělat tunel do dané sítě. Azure se v tomto případě chová jako relay a klient i server pak komunikují skrz něj.

A kde jsou PPTP a podobné protokoly?

SoftEther si dává za cíl podporovat pouze moderní a zabezpečené protokoly, tudíž podporu např. PPTP protokolu zde nenajdete.

Klient

Jak již bylo zmíněno SoftEther je jak serverové, tak i klientské řešení. Pro připojení pomocí standardních protokolů (SSTP, L2TP) můžete využít integrované řešení v systému (stejně tak i SCCM nebo Intune pro konfiguraci těchto profilů), pro VPN over DNS nebo SoftEther VPN je již zapotřebí použít klienta. Zde jako správci nemusíte zoufat, SoftEther umožňuje vygenerovat předkonfigurovaný instalační balíček, který následně můžete do koncových stanic distribuovat vaším preferovaných způsobem (GPO, web download pro BYOD, atd.).

Další zajímavou funkcionalitou je, že server také může klientovi poslat Welcome zprávu při každém připojení - např. připomenout zásady chování a pravidla využívání VPN.

Možnosti autentizace uživatelů

Ve výchozí konfiguraci jsou klienti ověřováni na základě uživatelského jména a hesla, které spravuje SoftEther server. Server má také integrovanou podporu pro ověřování na základě klientských certifikátů (ať už jednotlivých nebo centrálně podepsaných). Také zde nechybí podpora pro ověřování vůči Active Directory nebo možnost využít RADIUS server. Více o možnostech autentizace najdete zde.

Co se nevešlo

SoftEther nabízí opravdu spoustu funkcí, ze kterých bych jich pár rád ještě vypíchl. Zaprvé, spíš taková maličkost a možná i samozřejmost, je vestavěný DHCP server a podpora NATování. Další funkcí je možnost na každého uživatele nastavovat politiky, jako je třeba maximální počet souběžných přihlášení a spoustu dalších. Server i klient je možné spravovat jak přes GUI, tak i pomocí CLI nástrojů, včetně možnosti vzdálené správy, což umožňuje zjednodušit spoustu procesů. V neposlední řádě je zde podpora vysoké dostupnosti, clusterování a load-balancingu (zvládne až 4,096 klientů na jednotlivý server). Nechybí zde ani podpora bridgování mezi adaptéry a virtuálními HUBy. A poslední funkcionalitou, která nesmí být podle mého názoru opomenuta je podpora spousty scénářů - ať už se jedná o Point-To-Site nebo Site-To-Site či Ad-hoc VPN.

Na webu je taky dustupný set tutoriálů, jak konfigurovat různé scénáře a řešit časté problémy z praxe.

Praktická zkušenost na závěr

Když se vrátíme zpět na začátek článku a ukázkový problém - přesně toto byl jeden z hlavních důvodů proč jsem se rozhodl vůbec VPN řešit. Původně jsem měl nakonfigurovaný Windows Server a Remote Access roli, ze které jsem přešel na SoftEther pod Windows Serverem (který mi věrně sloužil posledních několik let), ale nicméně vzhledem k tomu, že jsem většinu věcí, které jsem měl doma odsunul ven do Azure, bylo zbytečné a neekonomické doma provozovat velký fyzický stroj, tak jsem nakonec (migraci jsem dělal minulý týden) skončil na kombinaci SoftEther a Raspberry Pi 2, které se nyní chová jako můj VPN server. Veškerou správu provádím úplně stejným způsobem jako když SoftEther bežel na Windows.

A možná taková praktičtější zkušenost úplně na závěr: Díky SoftEtheru (díky SoftEther klientovi) můžete provozovat třeba i In-Home Streaming ze Steamu, takže si i na svém Surfacu můžu dopřát několik prosmažených hodin týdně na náročnějších hrách :).