Trasa zadaná po každém připojení řeší okamžik, ne týden. V macOS je trvalou volbou obvykle prefix uložený u služby VPN, protože služba jej při každém připojení znovu nainstaluje a odstraní, když je služba odpojena. Alternativami jsou přechodná route add pro testování a háček při připojení pro adresy, které jsou známy až po vyjednání.

Rozhodněte, zda trasa patří službě, nebo relaci

Ptejte se, na čem prefix závisí. Pokud je to pevná privátní síť za nativní službou VPN, trasa patří této službě. Pokud závisí na adrese protějšku, která se mění při každém připojení, může být lepším vlastníkem háček nebo úloha řízená stavem. Pokud jen kontrolujete cestu na příštích pět minut, přechodná trasa stačí.

Trasa vázaná na službu má nejčistší životní cyklus. Objeví se se službou a zmizí, když služba není připojena, takže nemůže přežít tunel, na který ukazuje. Tato vlastnost má větší cenu než pohodlí jednořádkového příkazu.

Trasa vázaná na relaci patří rozhraní a toto číslo se mění bez oznámení. Opětovné připojení může tunelu přidělit jiné jméno utun než předchozí relace, což změní pevně zadaný příkaz v trasu, která neukazuje nikam, nebo hůř na jiný tunel.

Přečtěte si aktuální stav trasy a služby

Začněte jmény, která systém skutečně používá. Název služby v nastavení sítě je identifikátor pro příkazy níže a aktuální tabulka tras ukazuje, co připojený klient nainstaloval. Přečtěte obojí, dokud je tunel aktivní.

scutil --nc list
networksetup -listnetworkserviceorder
netstat -rn | head -30
route get 10.20.5.5

Toto vyhledání ukazuje, kterou bránu a rozhraní by jádro pro tuto adresu v tuto chvíli zvolilo. Pokud už volí tunel, prefix je pokryt a nová trasa by byla nadbytečná. Pokud volí místní router, tunelu tento prefix chybí.

Všimněte si adresy protějšku, dokud jste připojeni. Stane se hodnotou brány v trase vázané na službu a obvykle je to cíl zobrazený pro výchozí trasu tunelu v netstat -rn.

Uložte prefix pomocí networksetup

Nástroj networksetup připojuje další trasy k síťové službě. Pro službu s názvem OfficeVPN a privátní prefix dosažený přes protějšek tunelu je tvar:

sudo networksetup -setadditionalroutes OfficeVPN 10.20.0.0 255.255.0.0 10.8.0.6
networksetup -getadditionalroutes OfficeVPN

Každá trojice za názvem služby udává cíl, jeho masku sítě a protějšek tunelu jako bránu. Jedno volání může nést několik prefixů a prázdné volání vymaže uložený seznam. Čtečka je krok ověření; pokud je seznam prázdný, nastavení se nepoužilo na službu, kterou máte na mysli.

Brána musí být protějšek tunelu, ne fyzický router. Trasa, která uvádí místní bránu, posílá privátní prefix přes fyzické rozhraní, což je původní selhání s kroky navíc. Zastaralý protějšek je nejčastějším důvodem, proč trasa, která vypadá správně, nikdy nepřenáší provoz. Přečtěte protějšek znovu z připojeného stavu, místo abyste kopírovali adresu ze staré poznámky.

Používejte route add jen pro test

Přímá trasa je užitečná k prokázání, že prefix funguje, než jej uděláte trvalým. Forma s rozhraním se vyhýbá hledání brány:

sudo route -n add -net 10.20.0.0/16 -interface utun4

Trasa zmizí při dalším připojení a závisí na čísle rozhraní, které dnes existuje. To z ní dělá diagnostiku, ne nasazení. Pokud test funguje a trasa vázaná na službu ne, porovnejte nejprve hodnotu brány; to je pole, které je nejčastěji špatné.

Buďte opatrní u rad, které nahrazují výchozí trasu VPN, aby vynutily rozdělení. Klient, který vynucuje plný tunel, může po opětovném připojení nebo obnovení zásad znovu nainstalovat své trasy, takže ruční změna se tiše zruší. Hrstka privátních prefixů je problém směrování; držet veškerý internetový provoz lokálně proti zásadě plného tunelu je rozhodnutí na straně serveru.

Zvolte háček jen tehdy, když se adresa vyjednává

U linek založených na PPP, jako je L2TP, macOS spustí /etc/ppp/ip-up po navázání linky. Skript obdrží název rozhraní a vyjednané místní a vzdálené adresy, takže může přidat trasu, která závisí na protějšku přiděleném serverem. To je přesně případ, který pevná trasa služby nedokáže vyjádřit.

IKEv2 a klientské aplikace výrobců nemusí tuto cestu PPP vůbec používat, což znamená, že skript může zůstat po celou relaci tichý. Když se to stane, ekvivalentním mechanismem je úloha launchd, která zjišťuje scutil --nc status a reaguje na změnu stavu, s malým zpožděním.

Ať použijete jakýkoli háček, udělejte jej idempotentním a nechte jej odstraňovat jen trasy, které sám vytvořil. Skript, který smaže každou trasu zmiňující tunel, nakonec smaže trasu, která drží server VPN dosažitelný, a spojení spadne, jakmile uspěje.

Skončete kontrolou privátního cíle, běžného prohlížení a cyklu opětovného připojení nebo spánku. Poté prohlédněte scutil --dns, protože překlad jmen je samostatná zásada a fungující trasa nedokazuje, že se privátní jména přeloží.

Související články