host-only сүлжээний VM трафикийг TUN OpenVPN серверээр чиглүүлэх
Туннель ба host-only угтварыг тусдаа байлгаж, зочны маршрутыг түлхэж, дараа нь виртуал машин бүрт хост руу буцах зам өгнө үү.
host-only адаптерууд локал виртуал сүлжээ үүсгэдэг ба чиглүүлсэн TUN туннель хаягуудын хооронд IP пакет зөөдөг. Аль нь ч нөгөө рүү гүүр биш, тиймээс ажилладаг тохиргоо хэн дамжуулах, буцах маршрут хэнийх болохыг хэлэх ёстой. Эдгээр хоёр даалгаврыг андуурвал зочин туннель клиент хэзээ ч асуугаагүй эх сурвалжаар туннельд хариулна. Доорх загвар хоёр угтварыг тусдаа байлгаж, буцах замыг тодорхой болгоно.
Хоёр сүлжээ, хоёр угтвар
Туннелийн сан ба host-only сүлжээнд өөр өөр угтвар өгч, нэгийг нөгөөгийнх нь оронд хэзээ ч бүү ашигла. Энэ жишээнд VPN сан 10.44.0.0/24, host-only сүлжээ 192.168.99.0/24, хост 192.168.99.1, зочин 192.168.99.20 дээр байна. Нэг угтварыг TUN төхөөрөмж болон host-only адаптерт хоёуланд нь өгөх нь тэднийг нэгтгэхгүй. Энэ нь нэг хаягийн мужид хоёр шаардлага үүсгэж, чиглүүлэлтийн хүснэгт санамсаргүй үлдээсэн шаардлагын талд хариулна.
host-only адаптер хост дээр болон зочны дотор хоёуланд нь байдаг бөгөөд өөрөө машинаас гарах замгүй. Гүүр болон NAT холболтын нөлөө өөр, нэг зочны үйлчилгээнд хүрэхийн тулд гүүрэн горимд шилжих шаардлагагүй.
Хост зам мөчийг аль хэдийн барьсан
Ямар нэгэн зүйл нэмэхийн өмнө юу байгааг хар. Хост host-only сүлжээнд интерфейс, тэр угтварт маршруттай бөгөөд хоёулаа адаптер босох үед үүссэн.
ip -br addr show
ip route show 192.168.99.0/24
sysctl net.ipv4.ip_forward
Гурав дахь мөр нь хостыг үсрэлт болгодог механизм. Үүнгүйгээр туннелээс ирсэн пакет хост хүрч чадах ч дамжуулахгүй сүлжээнд хаяглагдана. Дамжуулалт шаардлагатай боловч хангалтгүй. Шүүлтүүрийн бодлого туннелийн интерфейс ба host-only интерфейсийн хоорондох тодорхой урсгалыг зөвшөөрөх эсэхийг шийдсээр байгаа бөгөөд тэр шийдвэр хэн ч уншаагүй анхдагч бодлогод биш, бичгээр байх ёстой.
Маршрутыг түлхэж, дараа нь юунд хүрч байгааг нь шүү
Түлхсэн маршрутыг хүлээн авдаг клиентүүдэд сервер host-only угтварыг өгч болно, энэ нь туннелийн ард байгаа бусад дэд сүлжээнд ашигладагтай ижил механизм.
push "route 192.168.99.0 255.255.255.0"
iptables -A FORWARD -i tun0 -o vboxnet0 -d 192.168.99.20 -p tcp --dport 5432 -j ACCEPT
iptables -A FORWARD -i vboxnet0 -o tun0 -s 192.168.99.20 -p tcp --sport 5432 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Эдгээр хоёр дүрэм нэг чиглэлд нэг үйлчилгээ болон түүний хариултыг зөвшөөрнө. Бүх угтварт хүрэх маршрут болон нэг портыг зөвшөөрөх шүүлтүүр нь санаатай хослол; маршрут дээр нөхцөлгүй зөвшөөрөл нэмэх нь лабораторийн үйлчилгээг нээлттэй үйлчилгээ болгох зам. Түлхсэн маршрут ч зөвшөөрөл биш. Клиент үүнийг хүлээн авч, хост дамжуулж, зочны firewall болон үйлчилгээ өөрөө одоо ч санал хэлнэ.
Зочинд буцах зам хэрэгтэй
10.44.0.x-ээс хүрэх зочин хариултаа хостын host-only хаяг руу илгээх ёстой, эсвэл хост эх сурвалжийг орчуулах ёстой. VirtualBox DHCP-ээс хаяг авах нь эдгээр хоёр зохицуулалтын аль нэгний талаар юу ч хэлэхгүй.
ip route add 10.44.0.0/24 via 192.168.99.1 dev enp0s8
ip route get 10.44.0.15
Энэ маршрутыг зочны дотор нэмэх нь анхны эх сурвалжийг хадгалж, клиент бүрийн бодлого, логыг утга учиртай байлгана. Хост дээр хязгаарлагдмал эх сурвалжийн орчуулга нь өөр хувилбар бөгөөд ажилладаг ч аль клиент холбогдсоныг нуух үнээр. Давхардал нь бүтэлгүйтлийн нөгөө горим. Гэрийн LAN нь 192.168.99.0/24-ийг аль хэдийн ашигладаг алсын клиент түлхсэн маршрутыг өөрийн сүлжээ гэж уншина, сервер талын ямар ч өөрчлөлт энэ хоёрдмол байдлыг засахгүй. Нэг талыг дахин дугаарла эсвэл мөргөлдөх магадлал багатай угтвар сонго.
TUN төхөөрөмж IP пакет зөөдөг тул зочны дотор анхдагч гарц нэмэх нь туннелийг host-only адаптертай Ethernet сегмент болгохгүй. TAP гүүр нь өөрийн клиент дэмжлэг, хаягийн эзэмшилтэй өөр загвар бөгөөд хоёр тайлбарыг холих нь хэзээ ч нийлдэггүй тохиргоонд хүргэдэг.
Шалгаад, дараа нь дахин ачаалалтыг даван туулах болго
Энгийн алсын клиентээс нэг хор хөнөөлгүй үйлчилгээг туршиж, зочны буцах маршрутыг шалгаж, зөвшөөрөөгүй үйлчилгээ удаан биш харин татгалзагдаж байгааг батал.
ss -lntp '( sport = :5432 )'
conntrack -L | grep 192.168.99.20
Дараа нь VPN үйлчилгээ болон виртуал машины сүлжээг дахин ачаалж, мөн тэр гурван шалгалтыг давт. Гараар нэмсэн маршрут дараагийн дахин ачаалалт хүртэл үргэлжилнэ, зөвхөн дулаан сесс дээр ажилладаг тохиргоо бол загвар биш. Хоёр угтвар, дамжуулалтын бодлого, зочны маршрутыг хамт тэмдэглэ. Дараагийн виртуал машиныг нэмэх хүнд гурвуулаа хэрэгтэй бөгөөд эс бөгөөс тэр алдаа гарсан холболт бүрт тэдгээрийг дахин нээх болно.