Atingi privatan prefikson tra VPN estas postulo kun daŭro: ĝi validas dum tiu konekto estas uzebla, kaj ĝi finiĝas kiam la konekto finiĝas. Ensaluta skripto ne povas esprimi tion, ĉar ensaluto kaj levado de tunelo estas malsamaj momentoj, kaj la tunelo ekzistanta ĉe ensaluto eble ne estas tiu, kiu portas trafikon unu minuton poste. La unua decido ne estas kiun komandon lanĉi. Ĝi estas kiu komponanto posedas la prefikson.

La prefikso bezonas posedanton, ne momenton

Komencu skribante la postulon kiel frazon kun subjekto: atingi 10.77.0.0/24 tra la Oficeja VPN dum tiu konekto estas supre. Tiu frazo nomas la prefikson, la konekton kaj la kondiĉon, kaj ĝi tuj ekskludas du popularajn anstataŭaĵojn: ensalutan hokon kaj interfacan nomon kiel ppp0 aŭ utun2.

Interfacaj nomoj estas asignataj dum rultempo kaj ne estas stabilaj inter rekonektoj. Hoko, kiu kongruas la nomon viditan pasintsemajne, aŭ ne ekfunkcios aŭ ekfunkcios kontraŭ la interfaco de iu alia. Ambaŭ rezultoj aspektas kiel enkursiga cimo, ne kiel la kaduka supozo, kiun ili estas. La sama kontraŭo validas por iu ajn skripto ligita al nomo, kiu ekzistas nur dum unu specifa tunelo estas supre.

Uzu subtenatan fonton de enkursiga intenco

La enirejo, administrata profilo aŭ la dokumentita enkursiga mekanismo de la posedanta kliento estas la ĝusta loko, kiam ajn tiu mekanismo povas esprimi la postulon. Kiu validas dependas de la protokolo kaj la provizanto, kaj la ŝlosiloj ne vojaĝas inter ili, do valoro, kiu agordas profilon OpenVPN diras nenion pri la denaska L2TP aŭ IKEv2 kliento.

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

Por ellaborantoj de pakaĵaj tuneloj, la IPv4 tunelaj agordoj de Apple eksplicite elmontras inkluzivitajn kaj ekskluzivitajn enkursigojn, kaj IPv6 havas sian ekvivalenton. Tiuj estas API-oj, kiujn la provizanto uzas, ne pruvo, ke ĉiu denaska VPN panelo ofertas al administranto arbitran enkursigan liston. Se la nuna kombinaĵo ne povas esprimi la bezonatajn prefiksojn, la sekva paŝo estas subtenata agorda vojo de la operatoro, ne alia programo instalita kun la espero, ke ĝi kondutos pli bone.

La vivodaŭro inkluzivas purigadon

Ekstera helpanto foje estas vere necesa, kaj tiam «aldonu la enkursigon» estas la plej malgranda parto de ĝia laboro. Ĝi devas scii, kiun konekton ĝi servas kaj kiun interfacon tiu konekto uzas, atendi ĝis la koncerna reta stato trankviliĝos, resti idempotenta kiam ĝi ruliĝas dufoje sinsekve, kaj purigi nenion, kion ĝi mem ne instalis.

Tiu lasta kondiĉo estas la dolora. Helpanto, kiu forigas ĉiun enkursigon kongruantan la oficejan prefikson, pli frue aŭ poste forigos enkursigon, kiun ĝi ne aldonis. La rezulta interrompo estas riproĉata al la VPN kliento, ĉar la kliento estas la parto, kiun la uzanto vidas. Decidi, kion helpanto posedas antaŭ ol skribi ĝin, estas pli malmultekosta ol poste klarigi, kial loka subreto ĉesis respondi.

La rekonekta vetkuro

Konsideru rapidan rekonekton. Sesio A falas, sesio B leviĝas kaj instalas sian enkursigon, kaj tiam la prokrastita purigado de A fine ruliĝas. Se tiu purigado forigas enkursigojn laŭ prefikso, ĝi prenas kun si la validan staton de B, kaj la konekto, kiu funkciis antaŭ sekundo, nun enkursigas en nenien.

Tio estas posedeca vetkuro, kaj aldoni dormon al la skripto nur ŝanĝas, kiu flanko gajnas ĝin. La solvo estas igi la purigadon kondiĉa de identeco: komparu la interfacon kaj sesion, kiujn la helpanto instalis, kun tiuj ankoraŭ aktualaj, kaj forigu nur ĉe kongruo.

Kion testi, kaj kion enkursigo ne povas fari

Akcepto devas kovri kvar transirojn: la unuan konekton, rekonekton al alia interfaco, malsukcesan konektoprovaĵon kaj la finan malkonekton. Post ĉiu el ili, legu la enkursigon, kiun la sistemo fakte elektis por adreso ĉe la fora flanko, ne tiun, kiun vi atendis.

route -n get 10.77.0.5
netstat -rn -f inet

Inkluzivu ankaŭ la ĝenajn kazojn en la sama trairo: IPv6 kie ĝi estas bezonata, loka prefikso kiu interkovras la foran, kaj la enkursigon al la publika VPN finpunkto mem, kiu devas plu funkcii dum la tunelo estas supre. Poste skribu, kio enkursigo ne estas. Ĝi elektas pakaĵojn; ĝi ne donas permeson ĉe la fora flanko kaj ĝi ne kreas revenan vojon, kaj tiuj restas apartaj postuloj kun apartaj posedantoj.

La rezulto, kiun vi volas, estas prefikso, kiu sekvas sian subtenatan konektposedanton tra ĉiu transiro, anstataŭ komando, kiu hazarde sukcesis unufoje sur la maŝino, kie ĝi estis skribita.

Rilataj artikoloj