Хост IPsec түншдээ хүрдэг, Docker контейнер хүрдэггүй
Гүүр сүлжээний контейнер өөр эх сурвалж ашиглаж, дамжуулалтаар ордог тул хостын tunnel бага л зүйлийг нотолно. Docker-г дахин эхлүүлэхийн өмнө селекторуудыг шалгана уу.
Та Linux машинаас алслагдсан хост руу ping илгээхэд хариу өгдөг, тэгэхээр tunnel ажиллаж байна. Хажууд байгаа контейнер хугацаа хэтэрсээр байгаа бөгөөд дараагийн байгалийн алхам нь Docker-г дахин эхлүүлэх юм. Гүүр сүлжээний контейнер ихэвчлэн өөр эх хаягаар эхэлж, хост руу програмын өөрийн гарах замаар биш, дамжуулалтаар ордог, тиймээс амжилттай тест өөр пакет хэмжсэн. Бодлогод суурилсан strongSwan tunnel-ийн хувьд дамжуулсан пакет суулгасан IPsec бодлоготой тохирохгүй үед алслагдсан дэд сүлжээ рүү энгийн маршрут хангалтгүй.
Доорх заавар нэг зорилгыг хоёр эх сурвалжаар дамжуулан хянаж, ямар нэгэн зүйлийг өөрчлөхөөс өмнө төлөвийг уншина.
Нэг зорилго, хоёр эх сурвалжаас эхэл
Эхлээд IP-ээр танигдсан үйлчилгээг сонго, ингэснээр DNS-ийг зэрэг засахгүй. Гурван баримтыг тэмдэглэ: контейнерийн гүүр префикс, амжилттай хост хүсэлтийн эх хаяг, tunnel-д тохиролцсон локал ба алслагдсан трафик селекторууд. Эдгээр гурван тоо энэ шинж тэмдгийн бараг бүх тохиолдлыг тайлбарлана.
Дараа нь бүтэлгүй хүсэлтийг контейнер дотроос давтаж, түүний үнэхээр ашигладаг эх сурвалжийг барь. Хэрэв тэр хаяг локал селекторт хамрагдаагүй бол үр дүнг мэдэж байна, контейнерийг дахин үүсгэх нь үүнийг өөрчлөхгүй.
Docker-д хүрэхээс өмнө бодлогуудыг унш
Зөвхөн унших хост шалгалтууд нь маршрутын шийдвэр, бодлогын мэдээллийн сан, тэдгээрийн хооронд сонгодог дүрмийг хамарна:
ip rule show
ip route show table all
ip xfrm policyБодлогын жагсаалт нь түлхүүрийн материал дүүрэн IPsec төлөвийн экспортгүйгээр селектор ба чиглэлийг харуулдаг тул тикетэд наах нь аюулгүй. Хост хаягийг хамардаг боловч гүүр префиксийг хамардаггүй локал селекторыг хай. Давхардлыг ч шалга: алслагдсан зорилгыг локал гэж үздэг контейнер маршрут хэзээ ч хүлээгдэж буй дамжуулсан пакетыг гаргахгүй, tunnel нь буруутгагдана. Жагсаалтыг контейнерийн эх хаягийн дэргэд хадгал, учир нь хоёулаа хамт бүх харьцуулалт.
Хэрэв контейнер префикс байхгүй бол зогсоод, өөр зүйлийг засахаас өмнө архитектурыг шийд. Зааврын үлдсэн хэсэг нь аль эх хаяг сүлжээнд харагдах ёстой талаар тохиролцсоныг таамаглана.
Шүүлт ба орчуулгыг дарааллаар шалга
Docker-ийн Linux гүүр галт хана нь дамжуулалтыг IPsec-ээс үл хамааран хааж болно. iptables backend-тэй бол FORWARD зам ба DOCKER-USER шийдвэрийг шалга, өмнөх шийдвэрийн дараа нэмсэн дүрэм хэзээ ч ажиллахгүй байж болно гэдгийг сана. nftables backend өөрөөр нэгддэг тул зөвхөн iptables жишээ үүнийг ингэж нэрлэсэн гэж DOCKER-USER гинжийг бүү үүсгэ; демон чинь үнэхээр аль backend ашиглаж байгааг шалга.
Дараа нь эх сурвалжийн орчуулгыг шалга. Өргөн MASQUERADE дүрэм нь өмнө нь IPsec селекторт тохирч байсан пакетыг одоо тохирохгүй пакет болгож болно, алдаа нь яг маршрутын асуудал мэт харагдана. strongSwan дамжуулалтын гарын авлага бодлогод аль хэдийн тохирсон трафикийн хувьд ийм орчуулгын өмнө шаардлагатай NAT үл хамаарах зүйлийг баримтжуулдаг.
Тэр үл хамаарах зүйл нь tunnel-д хамрагдаагүй контейнер эх сурвалж нэмэх арга биш. Энэ нь зөвхөн загварт аль хэдийн тохирсон трафикийг хамгаалдаг тул эхлээд селектор ба буцах замын асуудлыг шийд, дараа нь NAT ба шүүлтийг хариулттай нийцүүл. Хэрэв үл хамаарах зүйлийг өргөтгөж эхэлбэл өөрчлөх зүйл нь селектор, NAT дүрэм биш.
Дараа нь маршрутлагдсан эсвэл орчуулагдсан гэж шийд
Маршрутлагдсан контейнер дэд сүлжээ нь хоёр тал түүнийг хүлээн зөвшөөрч, түүн рүү алслагдсан буцах зам байхыг шаарддаг бөгөөд энэ нь ихэвчлэн хоёр төгсгөлд селектор өөрчлөх, алслагдсан талын эзэнтэй ярилцахыг илэрхийлнэ. Зориуд орчуулсан загвар нь харин холбогдох хайлтын үе шатанд бодлогоор хамрагдсан хаягийг танилцуулах ёстой бөгөөд энэ нь ихэвчлэн анхдагч MASQUERADE-ийн оронд нарийн, баримтжуулсан дүрмийг илэрхийлнэ.
Хоёр хувилбарын аль нь ч хостын ажиллаж буй tunnel-аас автоматаар гарахгүй бөгөөд тэдгээрийн хооронд сонгох нь эзэнтэй дизайны шийдвэр юм. Аль нэгийг сонгосноо бич, тэгэхгүй бол дараагийн инженер үүнийг галт хананы тоолуураас дахин гаргана.
Холимог алдаанд ч анхаар: дүрмийн багцын тал нь орчуулагдсан, тал нь орчуулагдаагүй нь очих портоос хамаарах, сүлжээний ямар ч зүйлээс хамаарахгүй тасалдалт амжилт үүсгэдэг.
Дахин эхлүүлэхээр биш, шинэ холболтоор баталгаажуул
Нарийн галт хананы тоолуур ба алслагдсан хүлээн авагчийг ажиглахдаа шинэ програмын холболт ашигла, ингэснээр ажиглалт бүр эх сурвалжтай болно. Docker-г дахин эхлүүлэх нь дүрмийн төлөвийг өөрчилж болох бөгөөд ажлын ачааллыг ч алдагдуулна, энэ нь таны авахыг хүссэн цэвэр дохиог алдагдуулна.
Тогтвортой үр дүн бол таны харуулж болох дөрвөн мэдэгдэл: контейнерийн эх сурвалж, тохирох хамгаалагдсан зам, зөвшөөрөгдсөн дамжуулалт, буцаж ирэх хариу. Дөрвүүл нь биелбэл контейнер түншдээ хосттой ижил шалтгаанаар хүрнэ.