Täiendavad Maci VPN-marsruudid vajavad omanikku, mitte sisselogimisskripti
Sisselogimisel üks kord lisatud marsruut ei ole taasühenduse poliitika. Anna kaugsetele eesliidestele omanik ja otsusta, kuidas need selle ühendusega ilmuvad, muutuvad ja kaovad.
Privaatse eesliidese jõudmine VPN-i kaudu on nõue, millel on kestus: see kehtib seni, kuni ühendus on kasutatav, ja lõpeb siis, kui ühendus lõpeb. Sisselogimisskript ei suuda seda väljendada, sest sisselogimine ja tunneli ülesehitamine on erinevad hetked ning sisselogimisel olemas olev tunnel ei pruugi olla see, mis kannab liiklust minut hiljem. Esimene otsus ei ole see, millist käsku käivitada. See on see, milline komponent eesliidest omab.
Eesliides vajab omanikku, mitte hetke
Alusta nõude kirjutamist subjektiga lausena: jõua 10.77.0.0/24 läbi kontori VPN-i, kuni see ühendus on üleval. See lause nimetab eesliidese, ühenduse ja tingimuse ning välistab kohe kaks populaarset asendajat: sisselogimiskonksu ja liidese nime nagu ppp0 või utun2.
Liidesenimed määratakse käitusajal ja ei ole ühenduste vahel stabiilsed. Konks, mis vastab eelmisel nädalal nähtud nimele, kas ei käivitu või käivitub kellegi teise liidese vastu. Mõlemad tulemused näivad marsruutimisveana, mitte aegunud eeldusena, millega on tegu. Sama vastuväide kehtib iga skripti kohta, mis on seotud nimega, mis eksisteerib ainult ühe konkreetse tunneli ülevaloleku ajal.
Kasuta toetatud marsruudikavatsuse allikat
Lüüs, hallatav profiil või omava kliendi dokumenteeritud marsruudimehhanism on õige koht, kui see mehhanism suudab nõuet väljendada. Milline neist kehtib, sõltub protokollist ja teenusepakkujast ning võtmed ei liigu nende vahel, seega väärtus, mis seadistab profiili OpenVPN ei ütle midagi native L2TP või IKEv2 kliendi kohta.
| Mechanism | Can carry extra prefixes | Who owns the lifetime |
|---|---|---|
| Gateway-pushed routes | Often, if the gateway is configured for it | The connection |
| Managed profile settings | Depends on the client and profile format | The profile |
| Provider tunnel settings | Yes, as included and excluded routes | The provider process |
| Manual command | Yes, once | Nobody |
Pakettunnelite arendajatele toovad Apple'i IPv4 tunneli seaded kaasatud ja välistatud marsruudid selgesõnaliselt välja ning IPv6-l on oma vaste. Need on API-d, mida teenusepakkuja kasutab, mitte tõestus, et iga native VPN-paneel pakub administraatorile suvalist marsruudinimekirja. Kui praegune kombinatsioon ei suuda vajalikke eesliideseid väljendada, on järgmine samm operaatori toetatud konfiguratsioonitee, mitte teine rakendus, mis paigaldatakse lootuses, et see käitub paremini.
Eluiga hõlmab puhastamist
Mõnikord on väline abiline tõesti vajalik, ja siis on «lisa marsruut» selle töö väikseim osa. See peab teadma, millist ühendust see teenindab ja millist liidest see ühendus kasutab, ootama, kuni asjakohane võrguseisund rahuneb, jääma idempotentseks, kui see käivitub kaks korda järjest, ja mitte puhastama midagi, mida see ise ei paigaldanud.
Viimane klausel on see, mis teeb haiget. Abiline, mis kustutab iga kontori eesliidesele vastava marsruudi, kustutab varem või hiljem marsruudi, mida see ei lisanud. Sellest tulenev katkestus pannakse VPN-kliendi süüks, sest klient on osa, mida kasutaja näeb. Enne kirjutamist otsustada, mida abiline omab, on odavam kui hiljem selgitada, miks kohalik alamvõrk enam ei vastanud.
Taasühenduse võidujooks
Kujuta ette kiiret taasühendust. Seanss A langeb, seanss B tõuseb ja paigaldab oma marsruudi, seejärel käivitub lõpuks A viivitatud puhastus. Kui see puhastus eemaldab marsruute eesliidese järgi, võtab see kaasa B kehtiva oleku ja ühendus, mis töötas sekund tagasi, marsruudib nüüd mitte kuhugi.
See on omandi võidujooks ja skripti une lisamine muudab ainult seda, kumb pool selle võidab. Lahendus on teha puhastamine identiteedist sõltuvaks: võrdle liidest ja seanssi, mille abiline paigaldas, nendega, mis on veel kehtivad, ja eemalda ainult kokkulangemisel.
Mida testida ja mida marsruut teha ei saa
Vastuvõtt peab katma neli üleminekut: esimene ühendus, taasühendus teisele liidesele, ebaõnnestunud ühenduskatse ja lõplik katkestus. Pärast igaüht loe marsruut, mille süsteem tegelikult valis kaugpoolse aadressi jaoks, mitte see, mida sa ootasid.
route -n get 10.77.0.5
netstat -rn -f inet
Lisa samasse ringi ka ebamugavad juhtumid: IPv6 seal, kus seda nõutakse, kohalik eesliides, mis kattub kaugse eesliidesega, ja marsruut avaliku VPN-lõpp-punkti enda juurde, mis peab tunneli ülevaloleku ajal edasi töötama. Seejärel kirjuta üles, mis marsruut ei ole. See valib pakette; see ei anna kaugpoolel luba ega loo tagasiteed, ja need jäävad eraldi nõueteks eraldi omanikega.
Tulemus, mida soovid, on eesliides, mis järgib oma toetatud ühenduse omanikku igas üleminekus, mitte käsk, mis juhuslikult üks kord õnnestus masinas, kuhu see kirjutati.