Skript kljuke se sproži, prebere ppp0 in uporabi poti na vmesniku, ki ima v tistem trenutku to ime. Včasih je to tunel, ki si ga mislil; včasih je seja, ki se je povezala minuto prej. Naslednja ponovna povezava premakne številko, in isti skript tiho konfigurira napačno povezavo. Rešitev je vzeti vmesnik iz klica, ki je pravkar tekel, in ob njem nositi predvideni profil.

Sledi eni seji od možnosti do kljuke

Začni tam, kjer se seja ustvari. xl2tpd zažene pppd z možnostno datoteko, ki jo imenuje pppoptfile tega tunela, zato se vtičnik, številka enote in morebitna oznaka profila določijo tam, ne v globalni datoteki. Upravitelj povezav lahko ustvari svoje možnosti, kar pomeni, da urejanje /etc/ppp/options ni dokaz, da se je tunel, ki ti je pomemben, spremenil. Ko se povezava dvigne, pppd zažene obvestilne skripte iz pošiljatelja distribucije. Ti skripti prejmejo ime vmesnika kot prvi argument in oznako profila kot šesti.

Okolje nosi ista dejstva pod imeni, kot sta IFNAME in PPP_IPPARAM, vendar je njihova razpoložljivost odvisna od nameščenega pošiljatelja. Preberi pošiljatelja, preden se zaneseš na spremenljivko: nekatere distribucije ohranijo vrstni red upstream argumentov, druge filtrirajo okolje, preden pokličejo tvoj skript. Skript, ki uporablja samo $1 in šesti argument, deluje v obeh ureditvah.

Beri vmesnik iz klica

Tradicionalna kljuka prejme vmesnik prvega. Ta položajna vrednost je identifikator vmesnika, ki opisuje sejo, ki je sprožila skript. Shrani jo v spremenljivko na vrhu, nato pa to spremenljivko uporabi za poti, pravila požarnega zidu in razgradnjo.

ipparam office-vpn

Oznako profila pritrdi tam, kjer so definirane možnosti, ne v skriptu. S to vrstico v možnostni datoteki tunela nosi vsaka seja, ustvarjena iz te datoteke, office-vpn kot šesti argument. Skript se lahko razveja po oznaki, medtem ko še vedno deluje na resničnem vmesniku. Oba imej v kodi ločeno, ker je oznaka stabilna, vmesnik pa se dodeli za vsako sejo.

Zahtevaj ime le, ko je zavrnitev pravilna

Fiksno ime je videti preprostejše od branja argumentov, a spremeni vedenje ob napaki. Možnost unit zahteva številko za odhodno povezavo, in pppd se vrne na dinamično dodeljevanje, ko je ta enota že zasedena. Nič v tem rezultatu ne rezervira ppp0 za tvoj profil.

ifname ppp-office

Možnost ifname se obnaša drugače: če je zahtevano ime že v uporabi ali ga ni mogoče dodeliti, pppd izstopi, namesto da bi izbral drugo. To je odločitev politike, ne kozmetično preimenovanje. Uporabi jo, ko je treba zavrniti drugo sočasno instanco istega profila, in potrdi, da nameščeni pppd in tvoj upravitelj povezav posredujeta to možnost.

Kakor koli, ime, ki ga skript vidi, je tisto, na katerem je treba ukrepati. Nastavljeno ime ne odpravi potrebe po branju klica, ker lahko znova zagnana seja še vedno predstavi drugačno ime od prejšnje.

Uskladi razgradnjo s sejo, ki si jo konfiguriral

Poti in pravila požarnega zidu preživijo skript, ki jih je ustvaril, zato mora razgradnja odstraniti natanko tiste objekte, ki jih ima seja v lasti. Označi pravila z oznako profila in z vmesnikom, ter briši po tej oznaki. Če sta lahko hkrati aktivna dva tunela, je brisanje vsega, kar omenja ppp, način, na katerega ena prekinitev pokvari drugo povezavo.

Preizkusi primer, ki razkrije napako: dvigni drugo sejo PPP, medtem ko je prva še povezana, nato znova poveži prvo in opazuj, kateri vmesnik poroča kljuka. Uspešen zagon z eno sejo ne dokaže ničesar o dodeljevanju imen. Ponovi z ustavljenim VPN, da potrdiš, da razgradnja ne pušča zastarele poti.

Hrani oznako, vmesnik in pot kljuke v zapiskih o uvedbi. Ko se številka po ponovnem zagonu spremeni, te tri vrednosti pojasnijo, zakaj se je skript obnašal drugače brez kakršne koli spremembe konfiguracije.

Sorodni članki