Rozdelené trasy L2TP na Macu: prečo adresa hostiteľa nefunguje
setadditionalroutes chce dvojice siete a masky, nahrádza celý zoznam a potrebuje doslovný názov služby. Skontrolujte tabuľku, kým obviníte bránu.
VPN sa pripojí, panel ponuky to ukazuje, a interný hostiteľ napriek tomu neodpovedá. V takej situácii existujú tri možné príčiny a ktorá platí, závisí od toho, ako bol tunel nakonfigurovaný. Buď príkaz trasy použil adresu hostiteľa tam, kde bola potrebná adresa siete, alebo samotný profil inštaluje predvolenú trasu, ktorá rozhodnutie pohltí, alebo je klient tunel PPP, ktorý potrebuje hook a nie kľúč profilu. Skontrolujte ich v tomto poradí, pretože prvú je najlacnejšie vylúčiť.
Cieľ je adresa siete, maska opisuje prefix
networksetup -setadditionalroutes prijíma trojice cieľa, masky podsiete a brány. Volanie, ktoré posiela jednu internú podsieť tunelom, vyzerá takto:
sudo networksetup -setadditionalroutes "VPN (L2TP)" 192.168.1.0 255.255.255.0 10.2.0.0
Všimnite si, čo je cieľ: adresa siete, nie adresa servera, ku ktorému sa snažíte dostať. V prípade, ktorý dal vzniknúť tomuto článku, rovnaký príkaz s 192.168.1.20 na tom mieste neurobil nič užitočné a nahradenie 192.168.1.0 fungovalo okamžite. Rovnaká maska, rovnaká brána, jedno iné číslo. To je celá porucha v malom.
Dôvod je aritmetika, nie politika. Adresa hostiteľa spárovaná s maskou /24 neopisuje 192.168.1.0/24; opisuje niečo, čo smerovacia tabuľka nedokáže užitočne udržať, takže sa záznam odmietne alebo ignoruje a tunel napokon prenáša menej, než ste zamýšľali.
Keď chcete presne jedného hostiteľa, použite adresu hostiteľa s maskou 255.255.255.255. Chyba je v zmiešaných dvojiciach, nie v použití adresy hostiteľa ako takej. /32 postavená z jednej adresy je legitímna trasa; /24 postavená z jednej adresy je chyba.
Volanie nahrádza zoznam a názov je doslovný
Dve správania ľudí na prvý pokus prekvapia. Príkaz nastavuje úplný zoznam ďalších trás, namiesto toho aby pridával, takže volanie, ktoré pridá jeden prefix, ticho odstráni ostatné, ktoré tam boli predtým. Zostavte celú množinu jediným volaním.
Názov služby tiež nie je označenie, ktoré ste vymysleli. Prečítajte ho z nástroja a skopírujte presne, vrátane prípony typu:
networksetup -listallnetworkservices
Názov, ktorý sa líši jediným znakom, nevyprodukuje chybu, ktorú by stálo za to čítať, ani trasu. Kopírovanie a vkladanie je tu správna technika, nie prepisovanie z pamäti.
Keď si profil nárokuje predvolenú trasu
Rozdelené trasy prehrávajú s predvolenou trasou pre každý cieľ, ktorý výslovne nepokrývajú, a profil L2TP nakonfigurovaný pre plný tunel inštaluje práve to. Ak profil hovorí, že všetko ide tunelom, zoznam ďalších trás sa mení len veľmi málo. Váš záznam nie je nesprávny; je jednoducho irelevantný pre ciele, ktoré nikdy nepomenúva. Ovládanie tohto zvyčajne sedí v nastavení profilu pre odosielanie všetkej prevádzky, nie v žiadnom príkaze trasy.
Rozhodnite sa, ktorý model skutočne chcete, skôr než budete upravovať ďalšie záznamy. Plný tunel s výnimkami je iná konfigurácia než rozdelený tunel s konkrétnymi prefixmi a miešanie oboch dáva tabuľku, ktorú nikto nedokáže predpovedať.
Ak organizácia vyžaduje plný tunel, prestaňte ho skúšať deliť lokálne a vezmite požiadavku k tomu, kto vlastní politiku. Lokálne pridaná trasa, ktorá jej odporuje, bude aj tak odstránená pri ďalšej aktualizácii profilu.
Tunely PPP potrebujú hook namiesto kľúča
Pri tuneloch založených na PPP je defaultroute kľúč profilu, ktorý vytvára predvolenú trasu; zrušte ho a klient prestane nárokovať každý cieľ. Trasy sa potom pridávajú po objavení rozhrania, zvyčajne z /etc/ppp/ip-up:
#!/bin/sh
/sbin/route add -net 192.168.1.0 -interface ppp0
Nechajte skript vlastnený rootom a spustiteľný a pridajte poistku na názov rozhrania, keď je na stroji viac než jeden profil tunela. Hook, ktorý beží pre každé spojenie PPP a predpokladá jedno meno zariadenia, je malá chyba s dlhým životom.
Overte rozdelenie tromi požiadavkami
Zachyťte tabuľku, kým ste pripojení, a poznamenajte, ktoré rozhranie obsluhuje tunel. Potom skontrolujte konkrétny cieľ namiesto toho, aby ste verili návratovému stavu príkazu, ktorý ho vytvoril. Návratový kód hlási, či nástroj prijal argumenty, nie či prevádzka ide cestou, ktorú ste zamýšľali.
Skončite tromi požiadavkami, ktoré rozdelenie dokazujú: jeden interný hostiteľ podľa adresy, jedno interné meno cez interný resolver a jeden verejný web, ktorý má stále používať miestne pripojenie. Ak verejný web teraz prechádza aj tunelom, rozdelenie nikdy nenastalo, nech sa zoznam trás zdá hovoriť čokoľvek.
Pripojte sa ešte raz a zopakujte internú požiadavku, pretože trasy pridané ručne môžu prežiť rozhranie, ktoré ich urobilo platnými a po páde tunela ticho premeniť prevádzku na čiernu dieru.