Tri stvari se morajo ujemati, preden tunel Kerio prenaša promet: naslov na vmesniku kvnet, vrednost, ki jo je odjemalec zabeležil, in to, kar pričakuje strežniška politika ali DHCP. Ko se ne ujemajo, se tunel vseeno overi in vseeno dvigne, in prav zato je napaka zmedena. Vmesnik se ustvari za vsako povezavo, zato naslov, nastavljen ročno, pripada tej seji in ničemur drugemu. Takšna je oblika problema, rešitev pa je kuka in ne konfiguracijska datoteka. Ostalo je, kje brati vrednost in kje jo uporabiti.

Zakaj se naslov vedno vrača

kvnet je navidezni vmesnik, ki ga odjemalec ustvari ob začetku povezave in odstrani ob njenem koncu. Ročni ip link set zato preživi natanko toliko, kolikor traja seja, na katero je bil uporabljen, naslednja povezava pa se začne s tem, kar dodeli odjemalec. Na stroju, kjer odjemalec ne uspe uporabiti pričakovanega naslova, vsaka ponovna povezava znova vnese isto neujemanje, pravilo najema ali dostopa pa napravo spet zavrne.

Ta vzorec je sam po sebi diagnostičen. Tunel, ki deluje eno sejo in odpove v naslednji, ni težava s poverilnicami, ker se poverilnice med povezavami ne spreminjajo.

Vrednost berite pri odjemalcu, ne pri vmesniku

Odjemalec za Linux zapisuje podrobnosti pogajanj v svoj dnevnik za odpravljanje napak, in naslov, ki ga namerava uporabiti, se tam pojavi kot zadnji žeton v obliki naslova v zaporedju povezave. Primerjajte ga s tem, kar jedro dejansko drži, kar je en readlink stran: cat /sys/class/net/kvnet/address.

Če se oba razlikujeta, je odjemalec poznal pravo vrednost in je ni uspel uporabiti, kuka, ki jo uporabi po tem, ko vmesnik obstaja, pa zapre to vrzel. Če dnevnik sploh ne vsebuje naslova, je težava starejša in pripada različici odjemalca ali profilu strežnika, ne pa skriptu.

Uporabite jo po tem, ko vmesnik obstaja

Uporabniki NetworkManagerja lahko skript vstavijo v njegovo mapo razpošiljatelja in delujejo le, ko se vmesnik VPN dvigne. Odjemalec, ki ga upravlja systemd, zahteva več previdnosti: drop-in, ki se izvede ob zagonu storitve, se običajno aktivira, preden vmesnik obstaja, zato mora kuka počakati na vmesnik, namesto da bi ga predpostavila. Nato nastavite naslov, in če jedro zavrne, medtem ko je povezava dvignjena, jo spustite, nastavite naslov in jo znova dvignite. Preberite izluščeni žeton nazaj skozi vzorec MAC, preden ga predate ip link, da nepričakovana vrstica dnevnika ne more postati argument.

Vse, kar teče kot root iz dnevnika odjemalca, si zasluži ozko lastništvo: datoteko v lasti roota, ki je drugi ne morejo pisati, in brez interpolacije lupine onkraj preverjenega naslova. Preverjanje vzorca držite znotraj skripta. Ne dovolite, da bi vsebina dnevnika odločala, kateri ukaz se izvede.

Preverite najem, ne povezave

ip -4 -o addr show dev kvnet bi moral pokazati naslov v pričakovanem obsegu, ip neigh show dev kvnet bi moral pokazati prehod, ena storitev za VPN pa bi morala odgovoriti. Nato se enkrat odklopite in znova povežite; če se naslov vrne, se kuka sproži ob napačnem dogodku ali pa se sploh ne sproži.

Vmesnik, ki se pojavi s pravilnim naslovom in nikoli ne dobi najema, kaže na strežniško stran. To je drugo preverjanje in običajno druga ekipa. Preden znova uredite kuko, potrdite, da je račun dovoljen in da ima nabor še naslov.

Po nadgradnji znova preglejte obhod

Različica odjemalca, ki naslov nastavi pravilno, pusti vašo kuko, da uporablja zastarelo vrednost, kar je nova napaka, ki jo je vnesel popravek. Prav tako nikoli ne kopirajte MAC z drugega stroja ali objave na forumu; uporabite vrednost, ki jo ta odjemalec zabeleži za ta račun, in zapišite datum, ko ste jo preverili.

Skript naj bo dovolj kratek, da ga preberete na enem sedenju. Obhodi, ki razčlenjujejo dnevnike, so po naravi začasni. Preživijo tisti, ki jih prihodnji bralec razume brez prvotne niti.

Sorodni članki