Zašto se upozorenje vpnc-a o brisanju rute pojavljuje u kontejneru
Brisanje predmemorije ruta ostatak je jezgre koja više ne drži tu predmemoriju; pogreška samo za čitanje dolazi od montiranja u kontejneru, ne od tunela.
Svježi zapisi kontejnera često završavaju pritužbom Read-only file system o /proc/sys/net/ipv4/route/flush, a taj se red 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 predmemorija IPv4 ruta nestala. 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.
Što je skripta pokušavala očistiti
Starije skripte za povezivanje završavale su čišćenjem predmemorije: upisati vrijednost u kontrolnu datoteku jezgre i zamoliti stog IPv4 da odbaci svoju predmemoriju 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 tu predmemoriju, a s njom 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 dopuštenja. 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 pogreš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.10Odgovor 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.