Host-only adaptéry vytvárajú lokálnu virtuálnu sieť a smerované TUN tunely prenášajú IP pakety medzi adresami. Ani jeden nie je mostom k druhému, preto funkčná konfigurácia musí povedať, kto preposiela a koho je návratová trasa. Ak si tieto dve priradenia pomýlite, hosť odpovie tunelu zdrojom, ktorý klient tunela nikdy nežiadal. Návrh nižšie drží oba prefixy oddelene a robí návratovú cestu explicitnou.

Dve siete, dva prefixy

Dajte fondu tunela a sieti host-only rôzne prefixy a nikdy nepoužívajte jeden za druhý. V tomto príklade je fond VPN 10.44.0.0/24 a sieť host-only je 192.168.99.0/24, hostiteľ je na 192.168.99.1 a hosť na 192.168.99.20. Priradenie rovnakého prefixu aj zariadeniu TUN, aj adaptéru host-only ich nespája. Vytvára dve nároky na jeden rozsah adries a smerovacia tabuľka potom odpovedá za ten nárok, ktorý náhodou zostal.

Adaptér host-only existuje na hostiteľovi aj vo vnútri hosťa a sám od seba nemá cestu mimo stroja. Premostené a NAT pripojenia majú inú expozíciu a prepnutie do mostového režimu nie je podmienkou na dosiahnutie jednej služby hosťa.

Hostiteľ už trasu má

Pozrite sa, čo existuje, skôr než niečo pridáte. Hostiteľ má rozhranie v sieti host-only a trasu pre tento prefix, obe vznikli pri zdvihnutí adaptéra.

ip -br addr show
ip route show 192.168.99.0/24
sysctl net.ipv4.ip_forward

Tretí riadok je mechanizmus, ktorý robí z hostiteľa hop. Bez neho je paket prichádzajúci z tunela adresovaný sieti, ktorú hostiteľ dosiahne, ale nebude ju preposielať. Preposielanie je nutné a nestačí. Filtrovacia politika stále rozhoduje, či je konkrétny tok medzi rozhraním tunela a rozhraním host-only povolený, a to rozhodnutie patrí písomne, nie do predvolenej politiky, ktorú nikto nečítal.

Pushnite trasu a potom filtrujte, čo dosiahne

Server môže poskytnúť prefix host-only klientom, ktorí prijímajú pushnuté trasy, čo je ten istý mechanizmus ako pre akúkoľvek inú podsieť za tunelom.

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

Tieto dve pravidlá povoľujú jednu službu v jednom smere a jej odpovede. Trasa, ktorá dosiahne celý prefix, a filter, ktorý povoľuje jeden port, sú zámerná kombinácia; trasa plus bezpodmienečné prijatie je spôsob, akým sa laboratórna služba stane vystavenou. Pushnutá trasa tiež nie je autorizácia. Klient ju prijme, hostiteľ ju prepošle a firewall hosťa aj samotná služba stále majú slovo.

Hosť potrebuje cestu späť

Hosť, ku ktorému sa pristupuje z 10.44.0.x, musí posielať svoje odpovede na host-only adresu hostiteľa, alebo musí hostiteľ preložiť zdroj. Získanie adresy z DHCP VirtualBoxu nehovorí nič o ani jednom z týchto usporiadaní.

ip route add 10.44.0.0/24 via 192.168.99.1 dev enp0s8
ip route get 10.44.0.15

Pridanie tejto trasy dovnútra hosťa zachová pôvodný zdroj, čo udržiava politiku a logy pre jednotlivých klientov zmysluplné. Obmedzený preklad zdroja na hostiteľovi je alternatíva a funguje, ale za cenu skrytia toho, ktorý klient sa pripojil. Prekrytie je druhý režim zlyhania. Vzdialený klient, ktorého domáca LAN už používa 192.168.99.0/24, bude pushnutú trasu čítať ako svoju vlastnú sieť a žiadna zmena na strane servera túto nejednoznačnosť nevyrieši. Prečíslujte jednu stranu alebo zvoľte prefix, ktorý pravdepodobne nebude kolidovať.

Zariadenie TUN prenáša IP pakety, takže pridanie predvolenej brány dovnútra hosťa nezmení tunel na Ethernet segment s adaptérom host-only. TAP most je iný návrh s vlastnou podporou klientov a vlastníctvom adries a miešanie oboch opisov vedie ku konfiguráciám, ktoré nikdy nekonvergujú.

Overte to a potom to prežite reštart

Otestujte jednu neškodnú službu z bežného vzdialeného klienta, skontrolujte návratovú trasu hosťa a potvrďte, že služba, ktorú ste nepovolili, je odmietnutá, nie pomalá.

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

Potom reštartujte službu VPN a sieť virtuálneho stroja a zopakujte tie isté tri kontroly. Trasa pridaná ručne prežije do ďalšieho reštartu a konfigurácia, ktorá funguje len v teplej relácii, nie je návrh. Zapíšte oba prefixy, politiku preposielania a trasu hosťa spolu. Kto pridá ďalší virtuálny stroj, bude potrebovať všetky tri, a inak ich znovu objaví jedno neúspešné pripojenie za druhým.

Súvisiace články