Зошто предупредувањето на vpnc за чистење на рутите се појавува во контејнер
Чистењето на кешот на рутите е остаток од јадрото што веќе не го чува тој кеш; грешката само за читање доаѓа од монтирањето во контејнерот, не од тунелот.
Свежите дневници на контејнерот често завршуваат со поплака Read-only file system за /proc/sys/net/ipv4/route/flush, и таа линија се обвинува за тунел што може да биде сосема здрав. Записот зад неа цели кон јадрен влез што веќе не прави ништо корисно откако кешот на рутите 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.10Одговорот на grep е послаб отколку што изгледа, бидејќи наоѓањето докажува дека линијата постои, а не дека се извршува без заштита; одржувана скрипта може да го носи записот внатре во заштита што го прескокнува. findmnt -no OPTIONS /proc/sys директно го решава монтирањето, а ro во тој излез значи дека секој запис под таа точка се одбива, што и да прави скриптата. Потоа пребарувањето на рута покажува дали дестинацијата што му е потребна на апликацијата се разрешува преку интерфејсот на тунелот или преку стандардната порта на контејнерот. Пребарување што ја избира стандардната порта значи дека тунелот се крена и ништо не рутира во него, што е проблем со рутирањето, а не со привилегиите.
Од каде всушност доаѓа поправката
Одржуваната поправка живее во скриптата, а не во знаменцата на контејнерот. upstream vpnc-script го промени начинот на кој се справува со оваа операција, затоа споредете ја копијата во сликата со тековниот upstream и ажурирајте преку пакетот или изградбата на сликата што ја доставува. Рачно уредена датотека во контејнер што работи не е прегледна и нема да ја преживее следната изградба.
--privileged е документиран како давање сите способности плус широк пристап до уреди, голема отстапка за порака што не менува ништо, затоа наведете ја способноста што недостасува ако навистина недостасува некоја. По ажурирањето, повторете го пребарувањето на рута и дозволете апликација да го користи тунелот, бидејќи тивок дневник и работечка врска се одделни резултати.