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 қызметі мен виртуалды машинаның желісін қайта жүктеңіз және сол үш тексеруді қайталаңыз. Қолмен қосылған маршрут келесі қайта жүктеуге дейін өмір сүреді, ал тек жылы сессияда жұмыс істейтін конфигурация дизайн емес. Екі префиксті, жіберу саясатын және қонақ маршрутын бірге жазып алыңыз. Келесі виртуалды машинаны қосатын адам үшеуіне де мұқтаж болады, әйтпесе ол оларды әрбір сәтсіз қосылым сайын қайта ашады.