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 кызматын жана виртуалдык машинанын тармагын кайра жүктөңүз жана ошол эле үч текшерүүнү кайталаңыз. Кол менен кошулган маршрут кийинки кайра жүктөөгө чейин жашайт, ал эми жылуу сессияда гана иштеген конфигурация долбоор эмес. Эки префикти, жиберүү саясатын жана коноктун маршрутун бирге жазып алыңыз. Кийинки виртуалдык машинаны кошкон адам үчөөнү тең талап кылат, болбосо ал аларды ар бир ийгиликсиз туташууда кайра ачат.