Svježi zapisnici kontejnera često završavaju pritužbom Read-only file system o /proc/sys/net/ipv4/route/flush, a taj red se okrivljuje za tunel koji može biti potpuno zdrav. Upis iza njega cilja na stavku jezgre koja više ne radi ništa korisno otkako je keš IPv4 ruta nestao. Unutar kontejnera /proc/sys se montira samo za čitanje, pa se preusmjeravanje odbija prije nego što stigne ikakva vrijednost i ljuska ispiše to odbijanje. Ispravan tunel može ispisivati ovo upozorenje dok god stari red ostaje u skripti, a --privileged nikada ne čini upis smislenim.

Šta je skripta pokušavala očistiti

Starije skripte za povezivanje završavale su čišćenjem keša: upisati vrijednost u kontrolnu datoteku jezgre i zamoliti stog IPv4 da odbaci svoj keš usmjeravanja, kako bi nova ruta tunela bila odabrana bez čekanja da zastarjele stavke isteknu. Datoteka je bila adresirana pod /proc/sys/net/ipv4/, što je operaciju činilo preusmjeravanjem ljuske, a ne naredbom usmjeravanja. Jezgra 3.6 uklonila je taj keš, a s njim i razlog postojanja brisanja. Ništa na trenutnoj putanji podataka ne zavisi od tog upisa.

Sama stavka preživjela je kao naslijeđena datoteka samo za upis, pa skripta koja još piše u nju doseže stvarnu putanju i stvarnu provjeru dozvola. Na hostu upis vraća uspjeh i ne mijenja ništa. U kontejneru isto preusmjeravanje nailazi na /proc/sys samo za čitanje i pada s EROFS, što ljuska ispiše kao poruku datotečnog sustava samo za čitanje. Na jezgrama gdje putanja zaista nedostaje formulacija postaje No such file or directory i zaključak se ne mijenja.

Dvije greške govore različite stvari i razliku vrijedi držati jasnom. Read-only file system znači da je jezgra dosegla stavku i odbila upis; No such file or directory znači da je stavka nestala. Nijedna poruka ne izvještava o uređaju tunela, rutama ili razrješavanju imena, pa nijedna ne može opravdati više privilegija.

Poredak je ono što poruku čini naizgled uzročnom. Skripta za povezivanje instalira rute, mijenja stanje sučelja i prepisuje razrješavanje imena prije nego što dosegne čišćenje na kraju, pa je zadnji ispisani red onaj koji ljudi citiraju čak i kada je svaki važan korak vratio uspjeh. Tunel koji se uspostavi i prenosi promet dok ispisuje ovo upozorenje točno odgovara gore opisanom mehanizmu.

Provjerite montiranje i rutu prije dodavanja privilegija

Tri čitanja razdvajaju kozmetičko upozorenje od stvarnog kvara: nosi li instalirana skripta još taj red, kako je montiran /proc/sys i kamo promet aplikacije zapravo ide. Pokrenite ih u istom imenskom prostoru kontejnera ili na hostu gdje se upozorenje pojavilo, jer provjera na nepovezanom stroju odgovara na drugo pitanje.

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-a slabiji je nego što izgleda, jer pogodak dokazuje da red postoji, a ne da se izvodi bez zaštite; održavana skripta može nositi upis unutar zaštite koja ga preskače. findmnt -no OPTIONS /proc/sys izravno rješava montiranje, a ro u tom izlazu znači da se svaki upis ispod te točke odbija, što god skripta radila. Zatim traženje rute pokazuje razrješava li se odredište koje aplikacija treba kroz sučelje tunela ili kroz zadani pristupnik kontejnera. Traženje koje odabere zadani pristupnik znači da se tunel podigao i da ništa ne usmjerava u njega, što je problem usmjeravanja, a ne privilegija.

Odakle ispravka zapravo dolazi

Održavana ispravka živi u skripti, a ne u zastavicama kontejnera. uzvodni vpnc-script promijenio je kako obrađuje ovu operaciju, pa usporedite kopiju u slici s trenutnim uzvodnim izdanjem i ažurirajte kroz paket ili izgradnju slike koja ga dostavlja. Ručno uređena datoteka u pokrenutom kontejneru nije pregledna i neće preživjeti sljedeću izgradnju.

--privileged je dokumentiran kao davanje svih sposobnosti plus širok pristup uređajima, veliki ustupak za poruku koja ništa ne mijenja, pa navedite nedostajuću sposobnost ako jedna zaista nedostaje. Nakon ažuriranja ponovite traženje rute i pustite aplikaciju da koristi tunel, jer tih zapisnik i ispravna veza odvojeni su rezultati.

Povezani članci