Нэг OpenVPN порт, гурван үйлчилгээ: дотоод портууд яагаад чухал вэ
Нэг туннель, гурван үйлчилгээ, нэг нийтийн порт. Гадаад VPN сонсогчийг дотоод аппликейшн портуудаас тусгаарлаж, дараа нь дотоод зөвшөөрөл бүрийг тус тусад нь шалгана уу.
Нэг SSH сесс, нэг вэб апп, нэг нэрийн хайлт нь портын төлөө тэмцэхгүйгээр нэг VPN холболтыг хуваалцаж чадна. Клиент гарц руу нэг шифрлэгдсэн урсгал үүсгэдэг бөгөөд аппликейшн бүрийн яриа түүний дотор явдаг. Гадна талд зөвхөн туннелийн өөрийн тээвэр, порт харагдана. Дотоод талд үйлчилгээ бүр өөрийн портыг хадгалж, өөрийн зөвшөөрөл шаарддаг хэвээр байна.
Гадаад урсгал юу дамжуулж, юу нуудаг вэ
Клиент пакет бүрийг машинаас гарахаас өмнө туннелийн тээврээр ороож байна. Тэр гадаад урсгал нь VPN тохируулагдсан үед тогтоосон нэг очих порттой. Боодол дотор анхны пакет бүр очих үйлчилгээний хаяг, портыг хадгална. Гарц боодлыг хуулж, дотоод толгойгоор чиглүүлдэг тул очих цэг сүлжээнээс ирж буй энгийн клиентийг хардаг.
Тиймээс WAN интерфейс дээрх барилт нь гурван биш, нэг яриаг харуулна. Дотоод портууд зөвхөн задсаны дараа илэрнэ. Тиймээс ганц галт хананы нээлт SSH, HTTPS, DNS-ийг нэгэн зэрэг зөөж чаддаг.
# WAN side: one outer tuple, whatever the inner services are
tcpdump -ni wan0 'udp port 443'
# tunnel side: the inner tuples appear after decapsulation
tcpdump -ni tun0
TUN/TAP баримт бичиг нь чиглүүлсэн TUN төхөөрөмж цөм болон хэрэглэгчийн орон зайн процессын хооронд IP пакет дамжуулах шилжилтийг тайлбарладаг. Тэр шилжилт нь дотоод толгойг гарцын чиглүүлэлт болон галт хананы кодод харагдуулдаг. Мөн гадаад порт ямар үйлчилгээ зөвшөөрөгдсөн тухай юу ч хэлдэггүйн шалтгааныг тайлбарлана.
NAT шилжүүлэг нь аппликейшнуудад биш, сонсогчид хамаарна
IPv4 NAT-ийн ард байгаа өөрөө байршуулсан гарц нэг орох хөрвүүлэлт шаарддаг: нийтийн хаяг, портыг VPN сонсогч руу буулгана. Туннелийн хэрэглэгчид хүрдэг гэсэн шалтгаанаар SSH, HTTPS, DNS-д ямар ч дүрэм шаардлагагүй. Тэдгээр портыг нийтлэх нь туннелийн аль хэдийн хамгаалж буй үйлчилгээг ил гаргана. Шилжүүлгийн дүрэм нь сонсогчийн хүртээмжийг тодорхойлдог, доторх зүйлийн зөвшөөрөл биш.
Эсрэг нь ч үнэн. Туннелийн портыг нээх нь өөр юу ч ил гаргахгүй тул зөвхөн туннелээр хүрэх үйлчилгээ нийтийн гадаргуугаа хаалттай байлгана. Тэр тусгаарлалт нь ихэвчлэн үйлчилгээг хувийн байлгах шалтгаан болдог.
Хандалтыг үнэхээр шийддэг газар нь дотоод бодлого
Шифрлэлт зам хамгаалдаг; очих цэгт зөвшөөрөл өгдөггүй. Аль префикс туннельд орохыг клиентийн чиглүүлэлт сонгоно, пакет түүнээс гарахыг гарцын шилжүүлгийн бодлого шийднэ, үйлчилгээ хариулах эсэхийг очих цэгийн галт хана, нэвтрэлт шийднэ. DNS бол хамгийн тод жишээ: асуулга зөөх нь таны клиентийн сангаас резолвер тэдгээрийг хүлээж авна гэсэн үг биш. Давхарга бүр бие даан үгүй гэж чадна.
Туннелээр үйлчилгээ бүрийг тус тусад нь шалга. Амжилттай хайлт вэб портын тухай юу ч хэлэхгүй, амжилттай вэб хүсэлт SSH-ийн тухай юу ч хэлэхгүй.
dig @10.40.0.53 app.corp.example
nc -vz 10.40.0.10 8443
ssh -p 2222 [email protected]
Туннель ажиллаж байтал бүхэн бүтэлгүйтвэл эхлээд клиентийн чиглүүлэлтийн хүснэгтийг унш. Нэг үйлчилгээ бүтэлгүйтэж, бусад нь ажиллаж байвал гэмтэл тэр очих цэг дээр байна. Эдгээр хоёр ажиглалт өөр өөр хариуцагч руу заадаг бөгөөд тэдгээрийг хольсон нь цаг алдахад хүргэдэг.
WireGuard ижил шугам татдаг
WireGuard гадаад сонсогчоо ListenPort гэж нэрлэдэг бол дотоод аппликейшн өөрт хэрэгтэй үйлчилгээний портыг ашигладаг хэвээр байна. AllowedIPs нь чиглүүлсэн префиксүүдийн олонлог, зөвшөөрөгдсөн үйлчилгээний портуудын жагсаалт биш. Үүнийг портын зөвшөөрлийн жагсаалт гэж уншвал туннелийн хийдэгтэй тохирохгүй дүрэм гарна. Нэршил өөр; давхарлалт өөр биш.
Үйлчилгээ өөрөө хост дээр ажиллаж байвал локал оролтын бодлогод, тэр хостын ард байвал шилжүүлгийн бодлогод зөвшөөр. Энэ ялгаа нь пакетыг аль дүрмийн багц харахыг шийднэ.
Ерөнхий хэлбэр нь олон дотоод яриатай нэг гадаад тээвэр юм. Хэд хэдэн гадаад солилцоо эсвэл өөр IP протокол шаарддаг бүтээгдэхүүн нь нэг нийтийн портын загвар энэ зохион байгуулалтыг дүрсэлдэг, бүх VPN-ийг биш гэдгийг сануулдаг.