Trasa zadaná po každom pripojení rieši okamih, nie týždeň. V macOS je trvalou voľbou zvyčajne prefix uložený so službou VPN, pretože služba ho pri každom pripojení znova nainštaluje a odstráni, keď je služba odpojená. Alternatívami sú prechodná route add na testovanie a háčik pri pripojení pre adresy známe až po vyjednaní.

Rozhodnite, či trasa patrí službe alebo relácii

Pýtajte sa, od čoho závisí prefix. Ak je to pevná privátna sieť za natívnou službou VPN, trasa patrí tejto službe. Ak závisí od adresy partnera, ktorá sa mení pri každom pripojení, lepším vlastníkom môže byť háčik alebo úloha riadená stavom. Ak len kontrolujete cestu na najbližších päť minút, prechodná trasa stačí.

Trasa viazaná na službu má najčistejší životný cyklus. Objaví sa so službou a zmizne, keď služba nie je pripojená, takže nemôže prežiť tunel, na ktorý ukazuje. Táto vlastnosť má väčšiu cenu než pohodlie jednoriadkového príkazu.

Trasa viazaná na reláciu patrí rozhraniu a toto číslo sa mení bez oznámenia. Opätovné pripojenie môže tunelu prideliť iné meno utun než predchádzajúca relácia, čo zmení pevne zadaný príkaz na trasu, ktorá neukazuje nikam alebo, horšie, na iný tunel.

Prečítajte si aktuálny stav trasy a služby

Začnite s menami, ktoré systém skutočne používa. Názov služby v nastaveniach siete je identifikátorom pre príkazy nižšie a aktuálna tabuľka trás ukazuje, čo nainštaloval pripojený klient. Prečítajte obe, kým je tunel aktívny.

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

Toto vyhľadanie ukazuje, ktorú bránu a rozhranie by jadro pre túto adresu v tejto chvíli zvolilo. Ak už volí tunel, prefix je pokrytý a nová trasa by bola nadbytočná. Ak volí miestny router, tunelu tento prefix chýba.

Všimnite si adresu partnera, kým ste pripojení. Stane sa hodnotou brány v trase viazanej na službu a zvyčajne je to cieľ zobrazený pre predvolenú trasu tunela v netstat -rn.

Uložte prefix pomocou networksetup

Nástroj networksetup pripája ďalšie trasy k sieťovej službe. Pre službu s názvom OfficeVPN a privátny prefix dosiahnutý cez partnera tunela je tvar:

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

Každá trojica za názvom služby udáva cieľ, jeho sieťovú masku a partnera tunela ako bránu. Jedno volanie môže niesť niekoľko prefixov a prázdne volanie vymaže uložený zoznam. Čítačka je krokom overenia; ak je zoznam prázdny, nastavenie sa neaplikovalo na službu, ktorú máte na mysli.

Brána musí byť partner tunela, nie fyzický router. Trasa, ktorá uvádza miestnu bránu, posiela privátny prefix cez fyzické rozhranie, čo je pôvodné zlyhanie s krokmi navyše. Zastaraný partner je najčastejším dôvodom, prečo trasa, ktorá vyzerá správne, nikdy neprenáša prevádzku. Prečítajte partnera znova z pripojeného stavu, namiesto kopírovania adresy zo starej poznámky.

Používajte route add len na test

Priama trasa je užitočná na preukázanie, že prefix funguje, predtým než ho urobíte trvalým. Forma s rozhraním sa vyhýba hľadaniu brány:

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

Trasa zmizne pri ďalšom pripojení a závisí od čísla rozhrania, ktoré dnes existuje. To z nej robí diagnostiku, nie nasadenie. Ak test funguje a trasa viazaná na službu nie, porovnajte najprv hodnotu brány; to je pole, ktoré je najčastejšie nesprávne.

Buďte opatrní pri radách, ktoré nahrádzajú predvolenú trasu VPN, aby vynútili rozdelenie. Klient, ktorý vynucuje plný tunel, môže po opätovnom pripojení alebo obnovení politiky znova nainštalovať svoje trasy, takže manuálna zmena sa potichu zruší. Hŕstka privátnych prefixov je problém smerovania; držať celú internetovú prevádzku lokálne proti politike plného tunela je rozhodnutie na strane servera.

Vyberte háčik len vtedy, keď sa adresa vyjednáva

Pre spojenia založené na PPP, ako je L2TP, macOS spustí /etc/ppp/ip-up po nadviazaní spojenia. Skript dostane názov rozhrania a vyjednané miestne a vzdialené adresy, takže môže pridať trasu závislú od partnera, ktorého pridelil server. To je presne prípad, ktorý pevná trasa služby nedokáže vyjadriť.

IKEv2 a klientske aplikácie výrobcov nemusia túto cestu PPP vôbec používať, čo znamená, že skript môže zostať ticho celú reláciu. Keď sa to stane, úloha launchd, ktorá zisťuje scutil --nc status a reaguje na zmenu stavu, je ekvivalentným mechanizmom s malým oneskorením.

Nech použijete akýkoľvek háčik, urobte ho idempotentným a nechajte ho odstraňovať len trasy, ktoré sám vytvoril. Skript, ktorý vymaže každú trasu spomínajúcu tunel, napokon vymaže trasu, ktorá drží server VPN dostupný, a spojenie spadne, hneď ako uspeje.

Skončite kontrolou privátneho cieľa, bežného prehliadania a cyklu opätovného pripojenia alebo spánku. Potom prezrite scutil --dns, pretože preklad mien je samostatná zásada a fungujúca trasa nedokazuje, že sa privátne mená prekladajú.

Súvisiace články