Jak rozdělený tunel rozhoduje, který provoz použije VPN
Rozdělený tunel je soubor rozhodnutí o trasách a vazbách, ne režim, který zapnete. Podívejte se, jak se pravidla pro jednotlivé aplikace, prefixy, DNS a bezpečnostní vypínače vzájemně ovlivňují.
Rozdělený tunel je směrovací politika vyjádřená souborem pravidel a klient je jen tím, co je nainstaluje. Rozdělení probíhá na dvou místech: pravidla shody, která volí cestu pro každý paket, a vazby, jež drží aplikaci na jednom rozhraní, ať tabulka říká cokoli. Na kterém mechanismu váš klient závisí, vysvětluje většinu překvapení, o nichž lidé hlásí.
Politiku, kterou dokážete vyjádřit v jednom řádku, lze otestovat. Politika popsaná jako rychlejší prohlížení to není a neřekne vám, které pravidlo změnit, když požadavek jde špatným směrem.
Klient instaluje pravidla, výběr dělá jádro
Když tunel vyjde, klient přidá trasy a často pravidla politiky do stejné tabulky, kterou používají vaše další rozhraní. Každý paket se pak dostane do vyhledání, jež srovnává jeho cíl s každým kandidátským prefixem a ponechá nejkonkrétnější shodu, zatímco priorita řeší shody mezi pravidly ukazujícími do různých tabulek. Nic v tomto vyhledání neví, že paket přišel z panelu prohlížeče a ne ze zálohovací úlohy. Vítězí pravidlo, které určuje cestu, a můžete je přečíst před změnou i po ní.
Proto může rozdělený tunel působit svévolně. Dvě cíle v jedné aplikaci se mohou vydat různými cestami jen proto, že jeden prefix je užší než druhý.
Stejná volba existuje na každé platformě, i když se názvy mění. Windows tlačí rozhodnutí do své filtrační platformy, Android vystavuje seznam povolených aplikací skrze svou službu VPN a macOS připojuje tunel k zařízení, které stále poslouchá směrovací tabulku. Microsoftovy poznámky ke směrování stojí za přečtení pro případ Windows a příručka psaná pro jednu platformu se málokdy přenese beze změny na jinou.
Vazba k aplikaci a cílové prefixy jsou různé nástroje
Politika cíle se ptá, kam paket jde, a radí se se směrovací tabulkou nebo pravidlem politiky. Politika pro aplikaci se ptá, který program otevřel soket, a platforma drží tento program na rozhraní tunelu, i když konkrétnější trasa míří jinam. Druhá je silnější, protože přežívá změny tabulky, ale pokrývá jen procesy, které platforma umí připsat. Pomocný proces, vestavěný prohlížeč nebo služba, která otevírá vlastní spojení, nemusí zdědit vazbu, kterou jste předpokládali.
Ani jeden přístup nepřežije politiku založenou na jménech bez pomoci. Adresy velkých stránek rotují mezi obsahovými sítěmi, takže ukotvení jména hostitele k několika prefixům vytvoří pravidlo, jež tiše přestane odpovídat. Politika, která musí následovat jména, potřebuje komponentu znající resolver, nikoli statickou trasu.
DNS a bezpečnostní vypínač následují vlastní pravidla
Překlad jmen je oddělené rozhodnutí od směrování paketů a rozdělený tunel obvykle chce dva resolvery: firemní pro interní jména, místní pro všechno ostatní. Klient může nainstalovat nastavení DNS pro jednotlivá rozhraní, předat dotazy pomocnému resolveru nebo nechat systémové výchozí nastavení nedotčené. Prohlížeč s vlastním šifrovaným resolverem obchází všechna tři uspořádání. Otestujte dotaz, místo abyste předpokládali, že resolver následoval trasu.
Bezpečnostní vypínač navrch přidává filtr a tento filtr ne vždy rozliší zamýšlené vyloučení od náhodného úniku. Někteří klienti blokují vše vně tunelu, jiní povolují výjimky, které politika deklaruje, takže si přečtěte, jak se chová ten váš, než se na kterékoli spolehnete.
Zkontrolujte rozdělení z obou stran
Otestujte zahrnutou cestu a vyloučenou cestu zvlášť a výsledek posuzujte podle názvu rozhraní, nikoli podle veřejné adresy. Tyto příkazy předpokládají hostitele Linux s již zvednutým tunelovým zařízením. Nahraďte 203.0.113.10 cílem, který vaše politika směruje dovnitř, a 198.51.100.25 cílem, který posílá ven.
ip route get 203.0.113.10
ip route get 198.51.100.25
resolvectl query intranet.example.com
curl -s --interface tun0 https://example.com -o /dev/null -w '%{http_code}\n'
Čtěte první dvě odpovědi společně, protože rozhraní uvedené v každé z nich ukazuje, zda rozdělení umístilo tento cíl do tunelu. Dotaz na resolver ukazuje, který server odpověděl na interní jméno, a poslední příkaz dokazuje, že tunelové zařízení vůbec unese požadavek. Selhání na druhém řádku, zatímco první uspěje, znamená, že politika dělá přesně to, co jí bylo řečeno.
Soubor zopakujte po opětovném připojení a po změně sítě. Obnova lease a změna rozhraní jsou místa, kde rozdělení přestává odpovídat záměru, pro který bylo postaveno, a uložený výstup z každého běhu činí odchylku zřejmou.