Неге vpnc маршрутын тазалау ескертуі контейнерде шығады
Маршрут кэшін тазалау — бұл кэшті енді ұстамайтын ядроның қалдығы; оқуға ғана арналған қате туннельден емес, контейнердің қосылуынан келеді.
Жаңа контейнер журналдары көбіне /proc/sys/net/ipv4/route/flush туралы Read-only file system шағымымен аяқталады, ал сол жол мүлдем сау болуы мүмкін туннельге жазылады. Оның артындағы жазу IPv4 маршрут кэші жоғалғаннан кейін ешқандай пайдалы іс жасамайтын ядро жазбасына бағытталған. Контейнер ішінде /proc/sys тек оқу режимінде қосылады, сондықтан кез келген мән келмес бұрын қайта бағыттау қабылданбайды және қабық сол бас тартуды басып шығарады. Жұмыс істеп тұрған туннель бұл ескертуді ескі жол скриптте қалғанша шығара алады, ал --privileged жазуды ешқашан мәнді етпейді.
Скрипт нені тазаламақ болды
Ескі қосылым скрипттері кэшті тазалаумен аяқталатын: ядроның басқару файлына мән жазу және IPv4 стекінен өзінің маршруттау кэшін тастауды сұрау, осылайша жаңа туннель маршруты ескірген жазбалардың мерзімі бітуін күтпей таңдалатын. Файл /proc/sys/net/ipv4/ астында мекенделген, бұл әрекетті маршруттау пәрмені емес, қабықтың қайта бағыттауына айналдырды. Ядро 3.6 сол кэшті, онымен бірге тазалаудың болу себебін жойды. Ағымдағы деректер жолында ештеңе сол жазбаға тәуелді емес.
Жазбаның өзі ескі тек жазуға арналған файл ретінде қалды, сондықтан оған әлі жазатын скрипт нақты жолға және нақты рұқсат тексерісіне жетеді. Хостта жазу сәттілік қайтарады және ештеңені өзгертпейді. Контейнерде сол қайта бағыттау тек оқуға арналған /proc/sys-ке соғылады және EROFS қатесімен сәтсіз аяқталады, оны қабық тек оқуға арналған файлдық жүйе хабарламасы ретінде басып шығарады. Жол шынымен жоқ ядроларда тұжырым No such file or directory болады, ал қорытынды өзгермейді.
Екі қате әртүрлі нәрсе айтады, және айырмашылықты анық ұстаған жөн. Read-only file system ядроның жазбаға жетіп, жазуды қабылдамағанын білдіреді; No such file or directory жазбаның жоғалғанын білдіреді. Ешбір хабарлама туннель құрылғысы, маршруттар немесе атауларды шешу туралы хабарламайды, сондықтан ешқайсысы көбірек артықшылықты ақтай алмайды.
Дәл реттілік хабарламаны себепті көрсетеді. Қосылым скрипті соңындағы тазалауға жетпей тұрып маршруттарды орнатады, интерфейс күйін өзгертеді және атауларды шешуді қайта жазады, сондықтан соңғы басылған жол — адамдар сілтейтін жол, әр маңызды қадам сәттілік қайтарса да. Бұл ескертуді басып шығара отырып орнайтын және трафикті тасымалдайтын туннель жоғарыдағы механизмге дәл сай келеді.
Артықшылық қоспас бұрын қосылу мен маршрутты тексеріңіз
Үш оқу косметикалық ескертуді нақты ақаудан ажыратады: орнатылған скрипт жолды әлі ұстай ма, /proc/sys қалай қосылған және қолданба трафигі шын мәнінде қайда кетеді. Оларды сол контейнер атау кеңістігінде немесе ескерту шыққан хостта іске қосыңыз, өйткені байланыссыз машинадағы тексеру басқа сұраққа жауап береді.
grep -n 'ipv4/route/flush' /usr/share/vpnc-scripts/vpnc-script
findmnt -no OPTIONS /proc/sys
ip -4 route get 10.20.5.10grep жауабы көрінгеннен әлсіз, өйткені табу жолдың бар екенін дәлелдейді, қорғаныссыз орындалатынын емес; қолдау көрсетілетін скрипт жазуды оны өткізіп жіберетін қорғаныстың ішінде ұстауы мүмкін. findmnt -no OPTIONS /proc/sys қосылуды тікелей шешеді, ал сол шығыстағы ro бұл нүктеден төмендегі әрбір жазудың қабылданбайтынын білдіреді, скрипт не істесе де. Содан кейін маршрут іздеу қолданбаға қажет меже туннель интерфейсі арқылы әлде контейнердің әдепкі шлюзі арқылы шешілетінін көрсетеді. Әдепкі шлюзді таңдаған іздеу туннель көтерілгенін және оған ештеңе бағытталмағанын білдіреді, бұл маршруттау мәселесі, артықшылық емес.
Түзету шын мәнінде қайдан келеді
Қолдау көрсетілетін түзету контейнер жалаушаларында емес, скриптте тұрады. upstream vpnc-script бұл әрекетті қалай өңдейтінін өзгертті, сондықтан кескін ішіндегі көшірмені ағымдағы upstream-пен салыстырыңыз және оны жеткізетін пакет немесе кескін құрастыру арқылы жаңартыңыз. Жұмыс істеп тұрған контейнер ішінде қолмен өңделген файл қарауға жарамсыз және келесі құрастырудан өтпейді.
--privileged барлық қабілеттерді және құрылғыларға кең қатынауды беретіні құжатталған, бұл ештеңені өзгертпейтін хабарлама үшін үлкен жеңілдік, сондықтан шынымен қабілет жетіспесе, соны атаңыз. Жаңартудан кейін маршрут іздеуді қайталаңыз және қолданбаға туннельді пайдалануға рұқсат етіңіз, өйткені тыныш журнал мен жұмыс істейтін байланыс бөлек нәтижелер.