Doseči zasebno predpono prek VPN je zahteva s trajanjem: velja, dokler je ta povezava uporabna, in se konča, ko se povezava konča. Prijavna skripta tega ne more izraziti, ker sta prijava in dvig tunela različna trenutka, in tunel, ki obstaja ob prijavi, morda ni tisti, ki minuto kasneje nosi promet. Prva odločitev ni, kateri ukaz izvesti. Je, katera komponenta ima predpono v lasti.

Predpona potrebuje lastnika, ne trenutka

Začnite tako, da zahtevo zapišete kot stavek s subjektom: dosezite 10.77.0.0/24 prek pisarniške VPN, dokler je ta povezava dvignjena. Ta stavek poimenuje predpono, povezavo in pogoj ter takoj izključi dva priljubljena nadomestka: prijavni hook in ime vmesnika, kot je ppp0 ali utun2.

Imena vmesnikov se dodeljujejo med izvajanjem in niso stabilna med ponovnimi povezavami. Hook, ki se ujema z imenom, ki ga je videl prejšnji teden, se bodisi ne sproži bodisi sproži na tujem vmesniku. Oba izida izgledata kot napaka usmerjanja, ne kot zastarela predpostavka, ki sta. Isti ugovor velja za vsako skripto, vezano na ime, ki obstaja le, dokler je dvignjen en določen tunel.

Uporabite podprt vir namere poti

Prehod, upravljani profil ali dokumentirani mehanizem poti lastniškega odjemalca je pravo mesto, kadar ta mehanizem lahko izrazi zahtevo. Kateri velja, je odvisno od protokola in ponudnika, ključi pa med njimi ne potujejo, zato vrednost, ki konfigurira profil OpenVPN ne pove ničesar o izvornem odjemalcu L2TP ali IKEv2.

MechanismCan carry extra prefixesWho owns the lifetime
Gateway-pushed routesOften, if the gateway is configured for itThe connection
Managed profile settingsDepends on the client and profile formatThe profile
Provider tunnel settingsYes, as included and excluded routesThe provider process
Manual commandYes, onceNobody

Za razvijalce paketnih tunelov nastavitve tunela IPv4 podjetja Apple izrecno razkrivajo vključene in izključene poti, IPv6 pa ima svojega dvojnika. To so API-ji, ki jih uporablja ponudnik, ne dokaz, da vsaka izvorna plošča VPN skrbniku ponuja poljuben seznam poti. Če trenutna kombinacija ne more izraziti potrebnih predpon, je naslednji korak podprta pot konfiguracije pri operaterju, ne druga aplikacija, nameščena v upanju, da se bo obnašala bolje.

Življenjska doba vključuje čiščenje

Včasih je zunanji pomočnik res potreben, in takrat je »dodaj pot« najmanjši del njegovega dela. Videti mora, kateri povezavi služi in kateri vmesnik ta povezava uporablja, počakati, da se ustrezno stanje omrežja umiri, ostati idempotenten, ko se zažene dvakrat zapored, in ne počistiti ničesar, česar ni namestil sam.

Zadnja klavzula je tista, ki boli. Pomočnik, ki izbriše vsako pot, ki se ujema s pisarniško predpono, bo prej ali slej izbrisal pot, ki je ni dodal. Nastala prekinitev se pripiše odjemalcu VPN, ker je odjemalec del, ki ga uporabnik vidi. Odločiti, kaj ima pomočnik v lasti, preden ga napišete, je ceneje kot pozneje razlagati, zakaj je lokalno podomrežje prenehalo odgovarjati.

Tekma pri ponovni povezavi

Predstavljajte si hitro ponovno povezavo. Seja A pade, seja B se dvigne in namesti svojo pot, nato pa se končno izvede A-jevo zakasnelo čiščenje. Če to čiščenje odstranjuje poti po predponi, odnese s seboj veljavno stanje B, in povezava, ki je delovala pred sekundo, zdaj usmerja v nič.

To je tekma za lastništvo, in dodajanje spanja v skripto spremeni le, katera stran jo dobi. Rešitev je, da čiščenje pogojite z identiteto: primerjajte vmesnik in sejo, ki ju je namestil pomočnik, s tistimi, ki še veljajo, in odstranite le ob ujemanju.

Kaj testirati in česa pot ne zmore

Sprejem mora pokriti štiri prehode: prvo povezavo, ponovno povezavo na drug vmesnik, neuspešen poskus povezave in končno odklopitev. Po vsakem preberite pot, ki jo je sistem dejansko izbral za naslov na oddaljeni strani, ne tiste, ki ste jo pričakovali.

route -n get 10.77.0.5
netstat -rn -f inet

V isti krog vključite tudi nerodne primere: IPv6 tam, kjer je potreben, lokalno predpono, ki se prekriva z oddaljeno, in pot do samega javnega končnega točke VPN, ki mora delovati, dokler je tunel dvignjen. Nato zapišite, kaj pot ni. Izbere pakete; ne podeljuje dovoljenja na oddaljeni strani in ne ustvarja povratne poti, in to ostajajo ločene zahteve z ločenimi lastniki.

Rezultat, ki ga želite, je predpona, ki sledi svojemu podprtemu lastniku povezave skozi vsak prehod, in ne ukaz, ki je enkrat po naključju uspel na stroju, kjer je bil napisan.

Sorodni članki