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

Ова два правила дозвољавају једну услугу у једном смеру и њене одговоре. Рута која достиже цео префикс и филтер који дозвољава један порт намерна су комбинација; рута плус безусловно прихватање је начин на који лабораторијска услуга постаје изложена. Гурнута рута такође није ауторизација. Клијент је прихвата, хост је прослеђује, а заштитни зид госта и сама услуга и даље имају реч.

Госту је потребан пут назад

Гост до кога се долази са 10.44.0.x мора да шаље своје одговоре на host-only адресу хоста, или хост мора да преведе извор. Примање адресе од DHCP-а VirtualBox-а не говори ништа ни о једном од та два уређења.

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 пакете, зато додавање подразумеваног гејтвеја унутар госта не претвара тунел у Ethernet сегмент са host-only адаптером. TAP мост је другачији пројекат са сопственом подршком клијената и власништвом над адресама, а мешање два описа води ка конфигурацијама које се никада не приближе.

Проверите, па учините да преживи рестарт

Тестирајте једну безопасну услугу са обичног удаљеног клијента, проверите повратну руту госта и потврдите да се услуга коју нисте дозволили одбија, а не да је спора.

ss -lntp '( sport = :5432 )'
conntrack -L | grep 192.168.99.20

Затим рестартујте VPN услугу и умрежавање виртуелне машине и поновите исте три провере. Рута додата ручно преживи до следећег рестарта, а конфигурација која ради само у топлој сесији није пројекат. Запишите оба префикса, политику прослеђивања и руту госта заједно. Онај ко дода следећу виртуелну машину требаће му све три, иначе ће их изнова откривати једну по једну неуспелу везу.

Повезани чланци