Čtyři rodiny protokolů pokrývají téměř každé zařízení, které ještě stojí v racku, a každá na Linuxu selhává jinak. Publikované porty a nakonfigurované nabídky protistrany určují váš balíček, nikoli distribuce, kterou zrovna používáte. Nainstalovat, co zmiňuje příspěvek na fóru, a pak upravovat, dokud se něco nepřipojí, je způsob, jak zmizí odpoledne. Přečtěte zařízení, nainstalujte jako druhé, ověřte jako třetí.

Zapište, co protistrana publikuje

Než otevřete správce balíčků, zapište protokol, porty a autentizaci, které zařízení očekává. Čtyři rodiny pokrývají většinu starého vybavení a tabulka níže je celé rozhodnutí na jedné obrazovce.

FamilyPortsLinux side
PPTPTCP 1723 plus GRE, IP protocol 47pppd with a peer file
L2TP/IPsecUDP 500, 4500, 1701NetworkManager plugin over strongSwan
IKEv1 aggressive with XAuthUDP 500native strongSwan connection
AnyConnect-style portalTCP 443openconnect with a TUN device

Příručka a vlastní pravidla firewallu zařízení jsou spolehlivější než název protokolu na jeho přihlašovací stránce. Zařízení inzerující IPsec může mluvit jen IKEv1 a vydání firmwaru, které nikdo nenainstaloval, může být to, co nakonec přidá IKEv2. Ověřte datovou cestu i port pro nastavení, protože právě tam se staré vybavení rozchází s moderními sítěmi. Chyba v tomto kroku znamená ladit klienta proti funkci, kterou druhá strana nikdy neměla.

PPTP: dokažte GRE, než upravíte pppd

PPTP na Linuxu není démon, který spustíte, ale volání pppd, a parametry připojení žijí v pojmenovaném peer souboru, který pppd přečte, když je zavolán. Distribuce ho stále balí, i když známé slabiny protokolu ho činí nevhodným pro cokoli citlivého, takže ho držte výhradně pro zařízení, které nenabízí nic jiného. Sledujte GRE, zatímco klient vyjednává, krátkým zachycením místo hádání. Selhání, které ztratí nejvíc času, není autentizace, ale chybějící datová cesta.

pppd call branch-office
tcpdump -ni any proto gre -c 5

Pokud se nastavení dokončí a spojení nikdy nepřenáší provoz, podezřívejte cestu GRE, než se dotknete přihlašovacích údajů. Cloudové bezpečnostní skupiny potřebují výslovné pravidlo pro protokol 47 a některé sítě ho blokují úplně bez viditelné chyby. Testujte ze sítě, kterou skutečně použijete, ne z laboratoře, která dovolí všechno.

L2TP/IPsec: jeden odpovídající návrh porazí deset pokusů

Čtěte log démona, ne dialog na ploše, protože dialog slévá několik různých selhání do jedné zprávy. Chyba NO_PROPOSAL_CHOSEN patří k první fázi: klient nabídl šifrování, hash nebo skupinu Diffie-Hellman, které server nepřijme. Vyjmenujte, co zařízení podporuje, a napište jeden návrh, který tomu odpovídá, protože náhodné kombinace většinou dají stejnou chybu pomaleji. Na ploše je praktickým klientem plugin NetworkManager L2TP se strongSwan nebo Libreswan pod ním.

Řetězec návrhu, který pro plugin na ploše znamená jedno, může pro démona, jemuž práci předává, znamenat něco jiného, takže držte syntaxi odpovídající vrstvě, kterou upravujete. Pokud zařízení žádá i tajemství tunelu, je to samostatná fáze od klíče IPsec. Ověřte, na kterou z nich se rozhraní ptá, než do něj něco napíšete.

Agresivní IKEv1 s XAuth a případ portálu

Koncový bod ve stylu FortiGate obvykle chce agresivní režim s XAuth a adresu v konfigurovaném režimu, což grafický plugin nemusí vůbec vystavit. Nativní démon to zvládne a blok níže je podoba takové konfigurace, nikoli úplný soubor. Pro hodnoty návrhu se podívejte do aktuální dokumentace výrobce.

conn branch
    keyexchange=ikev1
    aggressive=yes
    leftauth=psk
    leftauth2=xauth
    leftsourceip=%config
    right=203.0.113.10

Starší vydání strongSwan používala xauth=client tam, kde verze 5 používá leftauth2=xauth, takže zkopírovaný úryvek může selhat jen na syntaxi. Pro portál TLS openconnect mluvící protokolem AnyConnect zvládá Cisco a většinu přeznačených zařízení a potřebuje zařízení TUN a oprávnění k jeho nastavení. Předejte adresu portálu přesně tak, jak ji ukazuje prohlížeč, včetně případné cesty, kterou zařízení očekává, a pak zkontrolujte přidělenou adresu, než cokoli za ní otestujete. Vytvoření rozhraní předem odstraní jednu třídu překvapení během nastavení.

sudo ip tuntap add dev tun0 mode tun
sudo openconnect --protocol=anyconnect vpn.example.com

Připojte se, pak ověřujte v pevném pořadí

Spouštějte vždy jen jednoho správce VPN, protože profil NetworkManager a ručně spuštěný démon se poperou o trasy a DNS. Než otestujete ruční připojení, profil stáhněte a ověřte, že nezůstalo žádné staré rozhraní tunelu. Pak ověřujte v tomto pořadí: adresa tunelu, trasa k jedinému internímu hostiteli, který potřebujete, překlad jmen a nakonec skutečný požadavek. Zelená ikona dokazuje autentizaci a nic jiného.

ip -4 addr show tun0
ip route get 10.20.30.10
getent hosts app.internal

Pokud některý krok selže, zastavte se tam místo testování dalšího, protože selhání DNS po rozbité trase vás nic nenaučí. Než začnete experimentovat, uložte kopii funkčního profilu, protože smazaný soubor připojení se snadno ztratí a pracně obnovuje. Uchovávejte hodnoty návrhu ve stejné poznámce jako model zařízení a verzi firmwaru, protože ta poznámka je rozdíl mezi migrací a archeologickým projektem, když se krabice vymění.

Související články