Přizpůsobte klienta VPN pro Linux protokolu starého zařízení
Přečtěte publikované porty zařízení a nainstalujte klienta, který sedí: pppd přes GRE, strongSwan pro IKEv1 XAuth nebo openconnect pro portál.
Č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.
| Family | Ports | Linux side |
|---|---|---|
| PPTP | TCP 1723 plus GRE, IP protocol 47 | pppd with a peer file |
| L2TP/IPsec | UDP 500, 4500, 1701 | NetworkManager plugin over strongSwan |
| IKEv1 aggressive with XAuth | UDP 500 | native strongSwan connection |
| AnyConnect-style portal | TCP 443 | openconnect 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í.