VPN контейнер доторх веб интерфейсэд хүрэх: портын эзэмшигчийг сонгоно уу
Апп VPN-ийн нэрийн орон зайг хуваалцдаг тул порт нь VPN контейнерт хамаарна. Сонсогчийг зөв холбо, эзэмшигч дээр нийтэлж, замыг нарийн байлга.
Апп-д ямар ч алдаа байхгүй, туннельд ч ямар ч алдаа байхгүй, гэтэл хяналтын самбар ачаалагдахгүй байна. Үйлчилгээ network_mode: service:vpn-тэй ажиллах үед энэ нь VPN контейнерийн сүлжээний нэрийн орон зайг хуваалцдаг, өөрөөр хэлбэл түүний сонсогч болон нийтэлсэн портууд нь үйлчилгээнд биш, тухайн нэрийн орон зайд хамаарна. Үүнээс гурван шийдвэр гарна: апп хаана холбогдох, аль контейнер портыг нийтлэх, удирдлагын зам хэр нарийн байх. Тэдгээрийг буруу дарааллаар хийвэл тохиргоо бүр зөв харагдах боловч хослол нь ажиллахгүй.
Портын нэрийн орон зай хэнд хамаарах вэ
Хуваалцсан нэрийн орон зайд хамааралтай үйлчилгээнд ports: бичлэг нэмэх нь ямар ч ашиггүй, мөн хэд хэдэн сүлжээний сонголт нь зохиомжоор дэмжигдэхгүй. Үүний оронд нэрийн орон зайг эзэмшдэг контейнер дээр нийтэл. Тэр контейнер нь хост дээр хаяг нь харагддаг контейнер тул зураглал нь үйлчилгээ бүрт нэг биш, нэг бичлэг хэлбэрээр уншигдана.
services:
vpn:
image: vpn-client-image
cap_add: [NET_ADMIN]
ports:
- "127.0.0.1:8080:8080"
app:
network_mode: "service:vpn"
Зураглалын зүүн талын хаягт анхаар. 127.0.0.1-д холбох нь нийтэлсэн портыг хост-ын loopback дээр үлдээдэг бөгөөд энэ нь ихэвчлэн удирдлагын интерфейсийн хүсдэг зүйл юм. 0.0.0.0-д холбох нь түүнийг хост-ын бүх интерфейс дээр нээдэг бөгөөд энэ нь тав тух биш, өөр аюулгүй байдлын шийдвэр юм.
Аппыг нэрийн орон зай хүлээж буй газарт сонсго
Нэрийн орон зайн дотор 127.0.0.1-д холбогдсон сонсогч зөвхөн тэр орон зайн дотроос хүрэх боломжтой. Нийтэлсэн хост портууд гаднаас ирдэг тул зураглал ажиллахын тулд апп илүү өргөн хаягт холбогдох ёстой. Энэ нь ихэнх серверт нэг мөрийн өөрчлөлт бөгөөд контейнергүй байршуулалтад зориулж бичсэн бэхжүүлэх гарын авлагыг хуулсны дараа хүмүүсийн алгасдаг алхам нь яг энэ юм.
docker compose exec app ss -lntp
docker port vpn
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/
Апп доторх сонсогчдын жагсаалт холболтын хаягийн талаар үнэнийг хэлдэг бөгөөд docker port нь эзэмшигч үнэхээр юу нийтэлснийг харуулна. Эхнийх нь 127.0.0.1 гэж харуулж, хоёр дахь нь хост-ын зураглал харуулбал та VPN-ийн тохиргоог хөндөлгүйгээр зөрүүг олсон байна.
Удирдлагын зам хэрхэн орохыг сонго
Гурван ухаалаг зохион байгуулалт бий. VPN контейнер дээр нийтэлж, хост эсвэл локал сүлжээнээс хүр. Нэрийн орон зайн өмнө урвуу прокси тавьж, проксид цорын ганц нээлттэй портыг өг. Эсвэл хяналтын самбарыг зөвхөн нэрийн орон зайн дотроос exec сесс эсвэл SSH туннелээр хүрэх боломжтой байлга, энэ нь хамгийн бага илрэл, хамгийн бага тав тух юм.
Аль нь тохирох нь интерфэйс хэнд, хаанаас хэрэгтэй байгаагаас хамаарна. Нэг хост дээрх ганц администраторт loopback холболт хангалттай. VPN-ээр хүрдэг багт санаатай зам, нэрлэсэн эзэмшигч хэрэгтэй. Прокси хувилбарыг сонговол та TLS болон хандалтын лог авна, харин шинэчлэгдэж байх ёстой өөр нэг бүрэлдэхүүн нэмэгдэнэ.
Бүгдийг нээхгүйгээр удирдлагын портыг нээ
VPN клиентийн өөрийн локал хандалт эсвэл түгжээний бодлого нь гадагш чиглэсэн туннель төгс ажиллаж байсан ч орж ирж буй удирдлагын хүсэлтийг хаяж болно. Зорилтот эх сурвалж, портод нэг баримтжуулсан үл хамаарах зүйлийг зөвшөөрч, дараа нь туннелийн ердийн хамгаалалт өөрчлөгдөөгүйг баталгаажуул. Хяналтын самбар ачаалагдахын тулд яаралтай унтраалгыг унтраах нь бодит хяналтыг хөтчийн табтай солих хэрэг.
Аппын өөрийн баталгаажуулалтыг асаалттай үлдээ. VPN-тэй холбогдсон стек дотор байх нь локал хэрэглэгч бүр эсвэл хост-д хүрч чадах төхөөрөмж бүрт эрх өгөхгүй, туннелийн ард байгаа баталгаажуулалтгүй админ панел ч баталгаажуулалтгүй админ панел хэвээр байна.
Удирдлагын төхөөрөмжөөс шалга, дараа нь дахин шалга
Үйлчилгээг үнэхээр удирдах машинаас туршиж үз, хост-оос биш, дараа нь аппад шаардлагатай интернэт замыг тусад нь шалга. Удирдлагын амжилт нь нэг чиглэлийг нотолж, гадагш гарах талаар юу ч хэлэхгүй.
Стекийг дахин үүсгэсний дараа дахин турш. Солигдсон сүлжээний эзэмшигч нь апп холбогдох нэрийн орон зайг өөрчилдөг бөгөөд шинэчлэлтийн өмнө ажиллаж байсан URL дараа нь хаашаа ч заахаа болино. Нийтэлсэн зураглал болон холболтын хаягийг бичиж ав, ингэснээр дараагийн дахин бүтээх ажил дахин шалгалт биш, хоёр минутын шалгалт болно.