Čerstvé protokoly kontajnera sa často končia sťažnosťou Read-only file system na /proc/sys/net/ipv4/route/flush a tento riadok sa obviňuje za tunel, ktorý môže byť úplne v poriadku. Zápis za ním cieli na položku jadra, ktorá už nič užitočné nerobí, odkedy medzipamäť trás IPv4 zmizla. Vnútri kontajnera sa /proc/sys pripája iba na čítanie, takže presmerovanie je odmietnuté skôr, než sa dostane akákoľvek hodnota, a shell to odmietnutie vypíše. Fungujúci tunel môže toto varovanie vypisovať, kým starý riadok zostáva v skripte, a --privileged nikdy neurobí zápis zmysluplným.

Čo sa skript pokúšal vymazať

Staršie pripájacie skripty končili vyčistením medzipamäte: zapísať hodnotu do riadiaceho súboru jadra a požiadať zásobník IPv4, aby zahodil svoju medzipamäť smerovania, aby sa nová trasa tunela vybrala bez čakania na vypršanie zastaraných položiek. Súbor bol adresovaný pod /proc/sys/net/ipv4/, čo z operácie urobilo presmerovanie shellu, nie smerovací príkaz. Jadro 3.6 túto medzipamäť odstránilo a s ňou aj dôvod existencie vymazania. Nič v aktuálnej dátovej ceste nezávisí od tohto zápisu.

Samotná položka prežila ako starší súbor iba na zápis, takže skript, ktorý doň stále zapisuje, dosiahne skutočnú cestu a skutočnú kontrolu oprávnení. Na hostiteľovi zápis vráti úspech a nič nezmení. V kontajneri to isté presmerovanie narazí na /proc/sys iba na čítanie a zlyhá s EROFS, čo shell vypíše ako správu systému súborov iba na čítanie. Na jadrách, kde cesta skutočne chýba, sa znenie zmení na No such file or directory a záver sa nemení.

Obe chyby hovoria niečo iné a rozdiel stojí za to udržať jasný. Read-only file system znamená, že jadro dosiahlo položku a zápis odmietlo; No such file or directory znamená, že položka zmizla. Ani jedna správa neinformuje o zariadení tunela, trasách ani preklade mien, takže ani jedna nemôže odôvodniť vyššie oprávnenie.

Práve poradie robí správu zdanlivo kauzálnou. Pripájací skript inštaluje trasy, mení stav rozhrania a prepisuje preklad mien, kým sa dostane k vyčisteniu na konci, takže posledný vypísaný riadok je ten, ktorý ľudia citujú, aj keď každý dôležitý krok vrátil úspech. Tunel, ktorý sa nadviaže a prenáša prevádzku, zatiaľ čo vypisuje toto varovanie, presne zodpovedá vyššie opísanému mechanizmu.

Skontrolujte pripojenie a trasu pred pridaním oprávnenia

Tri čítania oddeľujú kozmetické varovanie od skutočnej poruchy: či inštalovaný skript stále nesie riadok, ako je pripojený /proc/sys a kam prevádzka aplikácie skutočne ide. Spustite ich v tom istom mennom priestore kontajnera alebo na hostiteľovi, kde sa varovanie objavilo, pretože kontrola na nesúvisiacom stroji odpovedá na inú otázku.

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

Odpoveď grep je slabšia, než sa zdá, pretože nález dokazuje, že riadok existuje, nie že beží bez ochrany; udržiavaný skript môže zápis niesť vnútri kontroly, ktorá ho preskakuje. findmnt -no OPTIONS /proc/sys vyrieši pripojenie priamo a ro v tomto výstupe znamená, že každý zápis pod týmto bodom je odmietnutý, čokoľvek skript robí. Potom hľadanie trasy ukáže, či sa cieľ, ktorý aplikácia potrebuje, prekladá cez rozhranie tunela alebo cez predvolenú bránu kontajnera. Hľadanie, ktoré vyberie predvolenú bránu, znamená, že tunel vstal a nič doň nesmeruje, čo je problém smerovania, nie oprávnenia.

Odkiaľ oprava skutočne prichádza

Udržiavaná oprava žije v skripte, nie v prepínačoch kontajnera. upstream vpnc-script zmenil, ako s touto operáciou zaobchádza, takže porovnajte kópiu v obraze s aktuálnym upstreamom a aktualizujte cez balík alebo zostavenie obrazu, ktoré ju dodáva. Ručne upravený súbor v bežiacom kontajneri nie je kontrolovateľný a neprežije ďalšie zostavenie.

--privileged je dokumentovaný ako udelenie všetkých schopností a širokého prístupu k zariadeniam, veľký ústupok za správu, ktorá nič nemení, preto pomenujte chýbajúcu schopnosť, ak naozaj chýba. Po aktualizácii zopakujte hľadanie trasy a nechajte aplikáciu tunel použiť, pretože tichý protokol a fungujúce spojenie sú oddelené výsledky.

Súvisiace články