Виртуал машин VPN клиент ажиллуулах бүрт хоёр өөр асуулт хамт гарч ирдэг бөгөөд тэдгээрийн хариулт ялгаатай. Эхнийх нь зочны доторх туннель хостыг хамгаалж байгаа эсэх, хоёр дахь нь хост дээрх туннель зочныг бүрхэж байгаа эсэх юм. Адаптерын горим хоёуланг нь шийддэг, VPN программын өөрөөс илүү. NAT адаптер хостыг харагдах төгсгөлийн цэг болгодог бол гүүрэн адаптер зочныг өөрийн хаягтайгаар сүлжээнд байрлуулдаг.

Шифрлэгдсэн сессийг үнэндээ хэн дуусгадаг вэ

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

Гадаад сүлжээ хэний хаягийг хардаг нь адаптерын горим хариулдаг асуулт юм. Тэр нь шийдэгдсэний дараа хамрах хүрээ нь бодлогоны асуудал байхаа болиод механик асуудал болно. Доорх бүхэн эдгээр хоёр баримтаас гаралтай.

NAT зочныг хосттой адилхан харагдтал дахин бичдэг

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

# on the host: adapter mode and NAT DNS behaviour
VBoxManage showvminfo "lab-vm" | grep -i -E "nic|nat"
VBoxManage modifyvm "lab-vm" --natdnshostresolver1 on

Өөрийн клиентийг ажиллуулдаг зочин тэр туннелийг зочны дотор дуусгаж, шифрлэгдсэн урсгал мөн тэр дахин бичлэгээр гардаг тул хостны програмууд өөрийн замыг болон өөрийн гарах хаягийг хадгална. VirtualBox энэ горимд нэрийн шийдлийг ч эзэмшиж, --natdnshostresolver1 идэвхжээгүй бол зочны асуултыг өөрийн механизмоор дамжуулдаг. Үүнийг идэвхжүүлбэл зочны хайлт хостны шийдэгч рүү шилжиж, хостны өөрийн харц зөв үед шийдлийг засдаг ба мөн адил туннелийн дотор л оршиж болох шийдэгчийг дамжуулдаг. Параметрийг өөрчлөхөөс өмнө VM-ийг унтраасан байх ёстой бөгөөд параметр нь зочны програмд бус адаптерт хамаарна.

Гүүр зочинд өөрийн түрээс, өөрийн илрэлийг өгдөг

Гүүр зочны хүрээг физик сегмент рүү дамжуулдаг тул DHCP түүнд түрээс өгч, сүлжээ түүнийг тусдаа хост гэж үздэг. Гүүрээр холбогдсон зочин бүр өөрийн өгөгдмөл маршруттай бие даасан туннель барьж чаддаг бөгөөд хостны хүснэгт хэзээ ч өөрчлөгддөггүй. Үнэ нь илрэл: зочин нэвтрүүлэгт хариулж, хөршийн хүснэгтэд гарч, коммутаторын портын аюулгүй байдал болон утасгүй клиентийн тусгаарлалтын дор ордог. Хост дээрх туннель ч энэ зохион байгуулалтыг бүрхдэггүй, учир нь зочны хүрээ хэзээ ч хостны стекээр дамждаггүй.

NAT тохиолдлоос энэ ялгааг зөвлөмж болгон үлдээхгүй, шууд хэлэх нь зүйтэй. Гүүрээр холбогдсон зочинд урсгал нь туннель ашиглах шаардлагатай болгонд өөрийн клиент, өөрийн нэвтрэх мэдээлэл хэрэгтэй. Зочин нутгийн сүлжээнд үл үзэгдэх байх ёстой газарт NAT эсвэл хяналттай маршруттай зөвхөн дотоод сүлжээ нь илүү сайн загвар юм.

Зочин яагаад хостны гарц болж чадахгүй вэ

Зочны туннелийг хостод зээлүүлэхэд хоёр том хяналтын програмын аль нэгэнд нь ч дэмжигдсэн шилжүүлэгч байхгүй. Хостод зочны туннель руу маршрут ч, түүн рүү заасан хөрвүүлэх дүрэм ч байхгүй тул зочин ба хостны урсгал тусдаа эзэмшигчтэй тусдаа урсгал хэвээр үлддэг. Энэ чиглэл адаптерын горимоос үл хамааран бүтэлгүйтдэг.

Ажиллах орлуулагч нь дамжуулалт ба прокси юм. SSH-ийн локал дамжуулалт хостод өөрийн давталтын хаяг руу холбогдох боломж олгодог бөгөөд зочин урсгалыг туннель руу зөөнө, энэ нь хоёр дахь клиент суулгахгүйгээр TCP үйлчилгээг бүрхдэг. Хостны өөрийн IP урсгалыг оронд нь зочны туннель ашиглуулах зочны дотор чиглүүлэгч, мөн хост дээр тодорхой маршрут ба хост дээр хөрвүүлэлт шаарддаг. Энэ нь чагт биш, жижиг сүлжээний загвар бөгөөд буцах замд төлөвлөгөө шаарддаг. Зочин зөвхөн клиент ажиллуулахын тулд байгаа бол клиентийг хост дээр тавьж, нэмэлт үсрэлтийг устга.

ssh -N -f -L 8080:internal-host.example:80 user@lab-vm

Шийдэгч ба маршрут хил хязгаарыг давахгүй

DNS сонголтыг хүлээн авсан адаптерыг дагадаг тул зочин хостны туннелийн шийдэгчийг өвлөхгүй бөгөөд хост зочинд түлхсэн серверийг хэзээ ч мэддэггүй. Түлхсэн dhcp-option DNS утгууд тэдгээрийг хүлээн авсан интерфейст хамаарна, тиймээс клиентгүй гүүрэн зочин дотоод нэрийг шийдэж чадахгүй. NAT зочин ихэвчлэн хяналтын програмын DNS боловсруулалтыг ашигладаг бөгөөд ялгаа нь орчин бүрт нэг тушаалаар харагдана.

# on the host
VBoxManage showvminfo "lab-vm" | grep -i -E "nic|nat"
# inside a Linux guest
ip -4 route
resolvectl status
# inside a Windows guest
Get-DnsClientServerAddress

Аль нэг нь хостныг дагадаг гэж үзэхээс өмнө зочны доторх шийдэгч ба маршрутыг унш. Дотоод нэрийг тэнд шийдэх шаардлагатай бол туннелийн шийдэгчийг зочны өөрийн адаптерт нэмж, дараа нь зөвхөн туннелийн цаана орших нэрээр шалга. VM бүрт адаптерын горим, туннелийн эзэн, шийдэгчийн эх сурвалжийг тэмдэглэ, учир нь эдгээр гурван баримт дараагийн бараг бүх асуултад хариулдаг. Бусад хяналтын програмууд горимын нэрийг өөрчилдөг ч зарчмыг хөндөхгүй.

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