Sveži dnevniki vsebnika se pogosto končajo s pritožbo Read-only file system glede /proc/sys/net/ipv4/route/flush, in ta vrstica je obtožena za tunel, ki je lahko popolnoma zdrav. Zapis za njo cilja na vnos jedra, ki ne dela nič koristnega več, odkar je predpomnilnik poti IPv4 izginil. Znotraj vsebnika se /proc/sys priklopi samo za branje, zato je preusmeritev zavrnjena, preden prispe kakšna vrednost, in lupina izpiše to zavrnitev. Delujoč tunel lahko izpisuje to opozorilo, dokler stara vrstica ostaja v skriptu, in --privileged zapisa nikoli ne naredi smiselnega.

Kaj je skript poskušal izprazniti

Starejši skripti za povezavo so se končali s čiščenjem predpomnilnika: zapisati vrednost v nadzorno datoteko jedra in prositi sklad IPv4, naj zavrže svoj predpomnilnik usmerjanja, da bi bila nova pot tunela izbrana brez čakanja na potek zastarelih vnosov. Datoteka je bila naslovljena pod /proc/sys/net/ipv4/, kar je operacijo naredilo preusmeritev lupine in ne ukaz za usmerjanje. Jedro 3.6 je ta predpomnilnik odstranilo, z njim pa tudi razlog za obstoj izpraznitve. Nič na trenutni podatkovni poti ni odvisno od tega zapisa.

Vnos sam je preživel kot stara datoteka samo za pisanje, zato skript, ki vanjo še piše, doseže resnično pot in resnično preverjanje dovoljenj. Na gostitelju zapis vrne uspeh in ne spremeni ničesar. V vsebniku ista preusmeritev zadene /proc/sys samo za branje in spodleti z EROFS, kar lupina izpiše kot sporočilo datotečnega sistema samo za branje. Na jedrih, kjer pot resnično manjka, se besedilo spremeni v No such file or directory, in sklep se ne spremeni.

Napaki govorita različne stvari, in razliko velja ohraniti jasno. Read-only file system pomeni, da je jedro doseglo vnos in zavrnilo zapis; No such file or directory pomeni, da je vnos izginil. Nobeno sporočilo ne poroča o napravi tunela, poteh ali razreševanju imen, zato nobeno ne more upravičiti več pravic.

Prav vrstni red naredi sporočilo videti vzročno. Skript za povezavo namesti poti, spremeni stanje vmesnika in prepiše razreševanje imen, preden doseže čiščenje na koncu, zato je zadnja izpisana vrstica tista, ki jo ljudje citirajo, tudi ko je vsak pomemben korak vrnil uspeh. Tunel, ki se vzpostavi in prenaša promet, medtem ko izpisuje to opozorilo, natančno ustreza zgoraj opisanemu mehanizmu.

Preden dodate pravico, preverite priklop in pot

Trije vpogledi ločijo kozmetično opozorilo od resnične okvare: ali nameščeni skript še nosi vrstico, kako je priklopljen /proc/sys in kam promet aplikacije v resnici gre. Zaženite jih v istem imenskem prostoru vsebnika ali na gostitelju, kjer se je opozorilo pojavilo, ker preverjanje na nepovezanem stroju odgovarja na drugo vprašanje.

grep -n 'ipv4/route/flush' /usr/share/vpnc-scripts/vpnc-script
findmnt -no OPTIONS /proc/sys
ip -4 route get 10.20.5.10

Odgovor grep je šibkejši, kot se zdi, ker zadetek dokazuje, da vrstica obstaja, ne pa da teče brez zaščite; vzdrževan skript lahko zapis nosi znotraj varovala, ki ga preskoči. findmnt -no OPTIONS /proc/sys priklop reši neposredno, in ro v tem izpisu pomeni, da je vsak zapis pod to točko zavrnjen, karkoli skript počne. Nato iskanje poti pokaže, ali se cilj, ki ga aplikacija potrebuje, razreši prek vmesnika tunela ali prek privzetih vrat vsebnika. Iskanje, ki izbere privzeta vrata, pomeni, da se je tunel dvignil in nič ne usmerja vanj, kar je težava usmerjanja in ne pravic.

Od kod popravek v resnici pride

Vzdrževani popravek živi v skriptu, ne v zastavicah vsebnika. upstream vpnc-script je spremenil, kako obravnava to operacijo, zato primerjajte kopijo v sliki s trenutnim upstreamom in posodobite prek paketa ali gradnje slike, ki jo zagotavlja. Ročno urejena datoteka v delujočem vsebniku ni pregledna in ne bo preživela naslednje gradnje.

--privileged je dokumentiran kot podeljevanje vseh zmožnosti in širokega dostopa do naprav, velik popustek za sporočilo, ki ne spremeni ničesar, zato poimenujte manjkajočo zmožnost, če ena res manjka. Po posodobitvi ponovite iskanje poti in dovolite aplikaciji uporabo tunela, ker sta tih dnevnik in delujoča povezava ločena rezultata.

Sorodni članki