VirtualBox VPN-Labor: Gateway-VM oder nëmmen-Host-Netzwierk
Wielt tëscht enger gerouteter Gateway-VM an engem Nëmmen-Host-Segment fir e VirtualBox VPN-Labor, a loosst de Gaascht duerno zoue fehle wann den Tunnel fält.
Dir musst entscheeden, wéi vill Maschinnerie Ären VPN-Labor verdéngt. Eng geroutet Gateway-VM tëscht zwee VirtualBox-Segmenter reproduzéiert d'Adresübersetzung, de Réckwee an d'Positioun vun der Firewall, hannert där e richtege Client sëtzt. Een eenzege Nëmmen-Host-Segment gëtt Iech eng kontrolléiert Dier an näischt anescht. D'Gateway-Versioun kascht dräi Gäscht an eng Routingtabell, déi Dir ënnerhalt; d'Nëmmen-Host-Versioun kascht ee Gaascht an eng Politik. Dräi Froen trennen se, an déi drëtt entscheet, ob Ären Test iwwerhaapt ka bestoen.
Beäntwert dräi Froen, ier Dir eppes klonéiert
Fänkt domat un, wat de VPN-Server observéiere muss. Wann de Server eng Quelladress muss gesinn, déi net déi vum Testgaascht ass, muss eppes tëscht hinnen iwwersetzen, an dat eppes muss en Router sinn, deen Dir kontrolléiert. Nëmmen-Host-Netzwierk gëtt dem Host en Adapter um Segment vum Gaascht, keen Iwwersetzer. Wann de Gaascht duerno eppes dobausse muss erreechen, hänkt Dir en NAT-Adapter un, an dem VirtualBox seng eege NAT-Maschinn schreift d'Quell ëm, ouni Iech ze froen.
Frot duerno, ob de Gaascht eppes anescht wéi duerch den Tunnel däerf erreechen. Déi Äntwert wielt intern oder nëmmen-Host, an dat ass d'Fro, déi déi meescht Laborbeschreiwungen iwwersprangen. Frot schlussendlech, wat muss geschéien, wann den Tunnel fält, well dat entscheet Politik an net Topologie, an e Labor, dat nëmmen de gléckleche Wee beweist, huet bal näischt getest.
| What the test requires | Routed gateway VM | Host-only guest |
|---|---|---|
| Server sees a translated source address | Yes, from your own MASQUERADE rule | No, VirtualBox NAT does it instead |
| The guest has exactly one egress | Yes, while the second adapter faces the tunnel | Only until a NAT adapter is attached |
| Policy is testable during a tunnel failure | Rules live in one place | Rules live on each guest |
Verbannt déi dräi Rollen mat internen Netzwierker
Benotzt dräi Gäscht an zwee genannte Segmenter, mam Gateway als déi eenzeg Maschinn, déi op béiden en Adapter huet:
VBoxManage modifyvm lab-client --nic1 intnet --intnet1 WAN
VBoxManage modifyvm lab-server --nic1 intnet --intnet1 LAN
VBoxManage modifyvm lab-gw --nic1 intnet --intnet1 WAN --nic2 intnet --intnet2 LAN
Et gëtt kee separaten Erstellschrëtt fir en internen Netzwierk. De String an --intnet1 ass de Segment: zwee Maschinnen deelen en nëmmen, wann den Numm genee iwwereneestëmmt, an näischt um Host ass drop ugeschloss. Genee déi lescht Eegeschaft ass de Grond, firwat de Labor propper widderhëlt, well d'Routen vum Host, säi eigenen VPN-Client a seng Firewall d'Gäscht net zoufälleg erreeche kënnen. En internen Segment huet och keen DHCP-Server, ausser Dir fügt een dobäi, dofir si statesch Adressen de kierzten Wee.
Gitt dem Client nëmme seng WAN-Adress, mat engem Standardgateway, deen op d'WAN-Adress vum Gateway weist. De Server kritt eng LAN-Adress a benotzt d'LAN-Adress vum Gateway als säi Standardgateway. En Gaascht, deen zwou Adressen op engem Segment hält, oder eng verierrt Route op deen aneren Segment huet, huet e Wee ëm de Router, an d'Tester hei drënner wäerte Iech beléien.
Ech halen eng Textdatei niewent den VM-Nimm mat de véier Adressen an den zwou Segmentnimm, a pechen se an all Shell. Woche méi spéit, wann eng Profilännerung eppes briechen, ass déi Datei den Ënnerscheed tëscht dem Profil debuggen an mengem eegene Gedächtnis debuggen.
Wielt intern oder nëmmen-Host fir de Segment, deen net däerf lecken
Den Nëmmen-Host-Modus erstellt en virtuelle Adapter um Host selwer, meeschtens vboxnet0, a gëtt dem Host eng Adress um Segment vum Gaascht. Dat ass bequem fir d'Administratioun a fatal fir en Isolatiounstest, well den Host de Gaascht elo direkt erreeche kann an all Service op der Hostsäit e méigleche Wee gëtt. Den interne Modus huet iwwerhaapt keen Hostadapter. Déi zwou Modi verwiessele sech liicht am Netzwierkastellungspanneau, dofir kontrolléiert den dokumentéierten Ënnerscheed an net d'Etikett (kuckt d'Säit VirtualBox-Netzwierkdetailer).
Fir en Gaascht, deen den Tunnel muss benotzen, ass intern dee séchere Standard, mam Gateway als eenzege Ausgang. Wann Dir nëmmen-Host behält, behandelt den Hostadapter als Administratiounswee a sot et haart: den Host däerf de Gaascht erreechen, an de Gaascht däerf den Host net als Ausgang benotze kënnen.
VBoxManage modifyvm lab-client --nic1 hostonly --hostonlyadapter1 vboxnet0
D'Isolatioun, déi Dir kënnt beweisen, ass d'Isolatioun, déi Dir konfiguréiert hutt. En Gaascht mat engem internen Adapter, enger Standardroute um Gateway an ouni NAT-Adapter huet kee Wee, deen de Gateway ëmgeet. En Gaascht mat engem Nëmmen-Host-Adapter an engem NAT-Adapter huet zwee Weeër, an nëmmen een dovun ass deen, deen Dir wollt testen.
Rout an iwwersetzt um Gateway, a loosst et duerno zoue fehle
VirtualBox leet net tëscht Segmenter weider; dat mécht de Gaascht. Mat der VPN-Server-VM hannert dem Gateway aktivéiert d'Weiderleedung a iwwersetzt den Traffic vum Client, wéi en zum Server erausgeet:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Mat där Regel gesäit de Server d'LAN-Adress vum Gateway amplaz déi vum Client, an esou gesäit en richtege Client hannert engem Provider-NAT fir en Head-End aus. Späichert de sysctl-Wäert an /etc/sysctl.d/ an d'Regel an de Firewall-Service, deen d'Distributioun benotzt, soss bréngt en Neistart de Labor roueg an en gerouteten, awer net iwwersate Zoustand zréck.
Weiderleedung ass keng Autorisatioun. Ënner der Standardpolitik FORWARD vum ACCEPT geet en Gaascht, deem seng Standardroute op de Gateway weist, duerch dee Interface eraus, deen d'Routingtabell wielt, mam Tunnel oder ouni. Wann de Gateway och en NAT-Adapter fir Pakinstallatioune huet, ass deen Adapter en funktionéierenden onverschlësselte Ausgang am Moment, wou den Tunnel fält, an Ären Nëmmen-VPN-Test war ni en Nëmmen-VPN-Test.
Wann de Server dogéint wäit ewech ass an de Gateway den Tunnel selwer ofschléisst, weist déi selwecht Entscheedung op den Tunnelinterface, net op d'NIC, déi den Internet erreecht:
iptables -P FORWARD DROP
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Halt dem Tunnel säin eegene baussenzege Transport an eng Out-of-Band-Administratiounsroute getrennt vum weidergeleetem Traffic. Wann den eenzege Wee fir de Gateway ze reparéieren duerch den Tunnel geet, deen Dir debuggt, gëtt de Labor eng Ausschlossübung. Eng seriell Konsole, en Nëmmen-Host-Administratiounsadapter oder en Snapshot vun engem bekannte gudden Zoustand si méi bëlleg wéi enne futti Router vun Hand ze recuperéieren.
Verifizéiert de Wee vum Gaascht, net vum Host
Schafft no baussen. Bestätegt, datt de Client d'WAN-Adress vum Gateway erreecht, duerno de Server duerch de Gateway, duerno datt eng Verbindung op de VPN-Port erausgeet an zréckkënnt. Eng Opnam op béiden Gateway-Interface weist, ob d'Äntwert ukommt an um Réckwee fält, wat eng Opnam nëmmen um Client net kann ënnerscheeden:
tcpdump -ni eth0 udp port 1194
tcpdump -ni tun0 udp port 1194
Beweist duerno den Ausgang. Frot vum Gaascht eng Adressreflexiounsservice, wéi eng Quell se gesäit, a vergläicht dat mat dem eegene Ausgang vum Gateway; wann d'Äntwert mat der Adress vum Host iwwereneestëmmt, gëtt et e Wee ëm den Tunnel. Kontrolléiert, wéi ee Resolver de Gaascht tatsächlech benotzt, a kontrolléiert IPv6 separat, well e Segment, an deem IPv6 aktiv ass, während den Tunnel nëmmen IPv4 dréit, aus Design leckt an net zoufälleg.
Briecht et schlussendlech bewosst. Stoppt den Tunnel, oder blockéiert säi baussenzege Port, an öffnet eng nei Verbindung vum Gaascht. Se muss fehlschloen, an de Grond muss een sinn, deen Dir kënnt nennen: keng Route, eng Oflehnungsregel oder en doudege Resolver. Start den Tunnel nei a bestätegt, datt de Gaascht sech erhëlt, ouni den Netzwierk nei opzebauen. Wann eng Mesh-VPN wéi Hamachi oder ZeroTier de Labor deelt, denkt drun, datt en iwwerbréckten Adapter dem Adapternumm follegt, net dem Mesh, dofir muss d'Bréck nei ausgeriicht ginn, nodeems de Client säin eegene virtuelle Adapter installéiert huet.
VBoxManage list bridgedifs
VBoxManage modifyvm lab-client --bridgeadapter1 <mesh-adapter-name>
Dem Gaascht säin Tunnel mam Host deelen spigelt de Problem. Dem Host seng Standardroute op de Gaascht riichten funktionéiert, an e Proxy am Gaascht och; NAT duerch den Host dréit dem Gaascht säin Tunnel net fir Traffic, deen den Host ugefaangen huet. Späichert d'Segmentnimm an d'Firewallregelen op enger Plaz, hëlt en Snapshot vum funktionéierende Zoustand, a notéiert d'Quelladress, déi de Server observéiert huet. Déi nächst Profilännerung kascht dann ee Skriptlaf amplaz vun engem nei opgebaute Labor.