Frisse kontenerlochs einigje faak op in Read-only file system-klacht oer /proc/sys/net/ipv4/route/flush, en dy rigel krijt de skuld fan in tunnel dy't folslein sûn wêze kin. De skriuwerij dêr't it om giet rjochtet him op in kernelynfier dy't neat nuttichs mear docht no't de IPv4-rûtekaasje fuort is. Yn in kontener wurdt /proc/sys allinnich-lêze montearre, dat de trochferwizing wurdt wegere foar't ienige wearde oankomt en de shell printsje dy wegering. In wurkjende tunnel kin dizze warskôging printsje salang't de âlde rigel yn it skript bliuwt, en --privileged makket de skriuwerij nea betsjuttingsfol.

Wat it skript besocht op te romjen

Aldere ferbining-skripts einige mei in kaasje-opromming: skriuw in wearde yn in kernel-kontrôlebestân en freegje de IPv4-stapel om syn rûtekaasje fuort te smiten, sadat in nije tunnelrûte keazen waard sûnder te wachtsjen oant ferâldere ynfierren ferrinne. It bestân waard ûnder /proc/sys/net/ipv4/ adressearre, wat de operaasje in shell-trochferwizing makke ynstee fan in rûteopdracht. Kernel 3.6 ferwidere dy kaasje, en dêrmei de reden wêrom't it leegjen bestie. Neat yn it hjoeddeiske datapaad hinget fan dy skriuwerij ôf.

It ynfier sels oerlibbe as in ferâldere allinnich-skriuw-bestân, dat in skript dat der noch yn skriuwt berikt in echte paad en in echte tastimming-kontrôle. Op in host jout de skriuwerij súkses werom en feroaret neat. Yn in kontener rekket deselde trochferwizing in allinnich-lêze /proc/sys en mislearret mei EROFS, wat de shell printsje as it allinnich-lêze bestânsysteemberjocht. Op kernels dêr't it paad wier ôfwêzich is, wurdt de bewurding No such file or directory, en de konklúzje feroaret net.

De twa flaters sizze ferskillende dingen, en it ferskil is de muoite wurdich dúdlik te hâlden. Read-only file system betsjut dat de kernel in ynfier berikte en de skriuwerij wegere; No such file or directory betsjut dat it ynfier fuort is. Gjint fan 'e berjochten rapportearret oer it tunnelapparaat, de rûtes of namme-oplossing, dat gjint kin mear privileezje rjochtfeardigje.

It is de folchoarder dy't it berjocht kausaal lykje lit. In ferbining-skript ynstallearret rûtes, feroaret ynterface-tastân en skriuwt namme-oplossing oer foar't it de opromming oan 'e ein berikt, dat de lêste printe rigel is de rigel dy't minsken sitearje sels as elke wichtige stap súkses weromjoech. In tunnel dy't him festiget en ferkear draacht wylst er dizze warskôging printsjet, past krekt by it meganisme hjirboppe.

Kontrolearje de montaazje en de rûte foar't jo privileezje tafoegje

Trije lêzingen skiede in kosmetyske warskôging fan in echte flater: oft it ynstallearre skript de rigel noch draacht, hoe't /proc/sys montearre is, en wêr't it ferkear fan 'e applikaasje wier hinne giet. Rin se yn deselde kontener-nammeromte of op 'e host dêr't de warskôging ferskynde, want in kontrôle op in net besibbe masine beantwurdet in oare fraach.

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

It grep-antwurd is swakker as it liket, want in treffer bewiist dat de rigel oanwêzich is, net dat er sûnder beskerming rint; in ûnderhâlden skript kin de skriuwerij yn in wachter drage dy't him oerslacht. findmnt -no OPTIONS /proc/sys beslist de montaazje direkt, en ro yn dy útfier betsjut dat elke skriuwerij ûnder dat punt wegere wurdt, wat it skript ek docht. De rûtesyktocht lit dan sjen oft de bestimming dy't de applikaasje nedich hat fia de tunnel-ynterface of fia de standertgateway fan 'e kontener oplost wurdt. In syktocht dy't de standertgateway kiest, betsjut dat de tunnel omheech kaam en neat dernei rûtet, wat in rûteprobleem is en gjin privileezjeprobleem.

Wêr't de oplossing wier wei komt

De ûnderhâlden oplossing wennet yn it skript en net yn 'e kontenerflaggen. It upstream vpnc-script hat feroare hoe't it dizze operaasje behannelet, dat fergelykje de kopy yn 'e ôfbylding mei it hjoeddeiske upstream en bywurkje fia it pakket of de ôfbyldingbou dy't it leveret. In mei de hân bewurke bestân yn in rinnende kontener is net neisjenber en sil de folgjende bou net oerlibje.

--privileged is dokumintearre as it jaan fan alle kapasiteiten plus brede apparaat tagong, in grutte konsesje foar in berjocht dat neat feroaret, dat neam de ûntbrekkende kapasiteit ynstee as ien wier ôfwêzich is. Nei de bywurking, werhelje de rûtesyktocht en lit in applikaasje de tunnel brûke, want in stil loch en in wurkjende ferbining binne aparte resultaten.

Relatearre artikelen