Шинэ контейнерын бүртгэлүүд ихэвчлэн /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.10

grep-ийн хариулт харагдахаас сул, учир нь олдсон зүйл мөр байгааг нотолдог, хамгаалалтгүй ажиллаж байгааг биш; арчилгаатай скрипт бичилтийг түүнийг алгасах хамгаалалтын дотор авч явж болно. findmnt -no OPTIONS /proc/sys холболтыг шууд шийдэж, тэр гаралтын ro нь тэр цэгээс доошхи бүх бичилт татгалзагдана гэсэн үг, скрипт юу ч хийсэн. Дараа нь маршрут хайлт нь аппликейшнд хэрэгтэй очих газар туннелийн интерфейсээр эсвэл контейнерын анхдагч гарцаар шийдэгдэж байгаа эсэхийг харуулна. Анхдагч гарцыг сонгосон хайлт нь туннель босч, түүн рүү юу ч маршрутлагдахгүй байгааг илэрхийлнэ, энэ нь маршрутын асуудал, эрх мэдлийн асуудал биш.

Засвар үнэхээр хаанаас ирдэг вэ

Арчилгаатай засвар нь контейнерын тугнуудлаас биш, скриптэд амьдардаг. upstream vpnc-script энэ үйлдлийг хэрхэн зохицуулдагийг өөрчилсөн тул дүрс доторх хуулбарыг одоогийн upstream-тай харьцуулж, түүнийг нийлүүлдэг багц эсвэл дүрсний бүтээлээр шинэчил. Ажиллаж буй контейнер дотор гараар засварласан файл хянагдах боломжгүй бөгөөд дараагийн бүтээлд үлдэхгүй.

--privileged бүх чадвар болон төхөөрөмжид өргөн хандалт олгодог гэж баримтлагдсан, энэ нь юу ч өөрчлөхгүй мессежийн хувьд томоохон буулт тул үнэхээр чадвар дутмаг бол түүнийг нэрлэ. Шинэчилсний дараа маршрут хайлтыг давтаж, аппликейшнд туннель ашиглахыг зөвшөөр, учир нь тайван бүртгэл болон ажиллаж буй холболт нь тусдаа үр дүн юм.

Холбоотой нийтлэлүүд