Verkeer van virtuele masjiene op die host-only-netwerk deur 'n TUN-OpenVPN-bediener roeteer
Hou die tonnel en die host-only-voorvoegsel apart, stoot die gas-roete, en gee dan elke virtuele masjien 'n doelbewuste terugpad deur die gasheer.
Host-only-adapters skep 'n plaaslike virtuele netwerk, en gerouteerde TUN-tonnels dra IP-pakkette tussen adresse. Nie een van hulle is 'n brug na die ander nie, en daarom moet 'n werkende opset sê wie aanstuur en wie die terugroete besit. Kry daardie twee toewysings verkeerd, en die gas antwoord die tonnel met 'n bron waarvoor die tonnel-kliënt nooit gevra het nie. Die ontwerp hieronder hou albei voorvoegsels apart en maak die terugpad eksplisiet.
Twee netwerke, twee voorvoegsels
Gee die tonnel-poel en die host-only-netwerk verskillende voorvoegsels en hergebruik nooit een vir die ander nie. In hierdie voorbeeld is die VPN-poel 10.44.0.0/24 en die host-only-netwerk 192.168.99.0/24, met die gasheer op 192.168.99.1 en 'n gas op 192.168.99.20. Om dieselfde voorvoegsel aan beide 'n TUN-toestel en die host-only-adapter toe te wys, verbind hulle nie. Dit skep twee aansprake op een adresreeks, en die roetertabel antwoord dan vir watter aanspraak dit ook al bygehou het.
Die host-only-adapter bestaan op die gasheer en binne die gas, en hy het uit eie beweging geen pad van die masjien af nie. Gebrugde en NAT-aansluitings het verskillende blootstelling, en om na gebrugde modus oor te skakel is nie 'n vereiste om een gas-diens te bereik nie.
Die gasheer hou reeds die pad
Kyk wat bestaan voordat jy iets byvoeg. Die gasheer het 'n koppelvlak op die host-only-netwerk en 'n roete vir daardie voorvoegsel, albei geskep toe die adapter opgekom het.
ip -br addr show
ip route show 192.168.99.0/24
sysctl net.ipv4.ip_forward
Die derde reël is die meganisme wat die gasheer in 'n hop verander. Sonder dit word 'n pakket wat uit die tonnel kom, geadresseer aan 'n netwerk wat die gasheer kan bereik maar nie sal aanstuur nie. Aanstuur is nodig en nie voldoende nie. Die filterbeleid besluit steeds of 'n bepaalde vloei tussen die tonnel-koppelvlak en die host-only-koppelvlak toegelaat word, en daardie besluit hoort op skrif eerder as in 'n verstekbeleid wat niemand gelees het nie.
Stoot die roete, filter dan wat dit bereik
Die bediener kan die host-only-voorvoegsel aan kliënte voorsien wat gestote roetes aanvaar, wat dieselfde meganisme is as vir enige ander subnet agter die tonnel.
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
Daardie twee reëls laat een diens in een rigting en sy antwoorde toe. 'n Roete wat die hele voorvoegsel bereik en 'n filter wat een poort toelaat, is 'n doelbewuste kombinasie; 'n roete plus 'n onvoorwaardelike aanvaarding is hoe 'n lab-diens 'n blootgestelde diens word. 'n Gestote roete is ook nie magtiging nie. Die kliënt aanvaar dit, die gasheer stuur dit aan, en die gas-vuurmuur en die diens self het steeds 'n stem.
Die gas het 'n weg terug nodig
'n Gas wat vanaf 10.44.0.x bereik word, moet sy antwoorde na die gasheer se host-only-adres stuur, of die gasheer moet die bron vertaal. Om 'n adres van VirtualBox DHCP te ontvang, sê niks oor enige van die twee reëlings nie.
ip route add 10.44.0.0/24 via 192.168.99.1 dev enp0s8
ip route get 10.44.0.15
Om daardie roete binne die gas by te voeg, bewaar die oorspronklike bron, wat beleid en logs per kliënt betekenisvol hou. Gerigte bronvertaling op die gasheer is die alternatief, en dit werk, ten koste daarvan dat dit verberg watter kliënt gekoppel het. Oorvleueling is die ander foutmodus. 'n Afgeleë kliënt wie se tuis-LAN reeds 192.168.99.0/24 gebruik, sal die gestote roete as sy eie netwerk lees, en geen verandering aan die bedienerkant los daardie dubbelsinnigheid op nie. Nommer een kant her of kies 'n voorvoegsel wat waarskynlik nie bots nie.
'n TUN-toestel dra IP-pakkette, so om 'n verstek-gateway binne 'n gas by te voeg, maak nie die tonnel 'n Ethernet-segment saam met die host-only-adapter nie. TAP-brugging is 'n ander ontwerp met sy eie kliëntondersteuning en adresbesit, en om die twee beskrywings te meng lei tot opsette wat nooit konvergeer nie.
Verifieer, en maak dit dan 'n herbegin oorleef
Toets een onskadelike diens vanaf 'n gewone afgeleë kliënt, kyk na die gas se terugroete, en bevestig dat 'n diens wat jy nie toegelaat het nie, geweier word eerder as traag.
ss -lntp '( sport = :5432 )'
conntrack -L | grep 192.168.99.20
Herbegin dan die VPN-diens en die virtuele masjien se netwerk, en herhaal dieselfde drie kontroles. 'n Roete wat met die hand bygevoeg is, oorleef tot die volgende herbegin, en 'n opset wat net in 'n warm sessie werk, is nie 'n ontwerp nie. Teken die twee voorvoegsels, die aanstuurbeleid en die gas-roete saam aan. Wie die volgende virtuele masjien byvoeg, sal al drie nodig hê en sal hulle anders een mislukte verbinding op 'n slag herontdek.