DNS van de VirtualBox NAT-gast breekt nadat de host lid wordt van een VPN
De gast heeft zijn eigen resolver en de NAT-adapter heeft twee DNS-modi. Volg één lookup en bepaal daarna of de hostresolver-modus bij het VPN-beleid past.
Op een Windows-host wordt de interne applicatienaam opgelost zodra de VPN verbindt, maar in een Ubuntu-gast niet. De gast behoudt zijn eigen resolverinstellingen, en de NAT-adapter ervoor kan DNS-query's op twee verschillende manieren beantwoorden. De gast naar een publieke resolver wijzen laat websites weer laden, terwijl privénamen kapot blijven. Daarom wordt het resolverpad gevolgd voordat er iets wordt gewijzigd.
Volg één lookup door de NAT-adapter
Kies één interne volledig gekwalificeerde naam en één publieke naam als controle. Bevestig op de host, met de tunnel omhoog, dat de interne naam oplost en dat de applicatie erachter opent. Voer daarna dezelfde twee lookups in de gast uit en vergelijk de antwoorden, niet de tools.
Bevestig dat de adapter echt gewone NAT is voordat u verdergaat. Een bridge-adapter, een benoemd NAT-netwerk en een tweede VPN-client in de gast hebben elk hun eigen configuratie en hun eigen verklaring. Gissen op dit punt verspilt de rest van het onderzoek.
VBoxManage showvminfo work-ubuntu --machinereadable | grep -i natnet resolvectl status | head -40 cat /etc/resolv.conf
De eerste opdracht toont de adaptermodus en elk NAT-netwerk dat eraan is gekoppeld. In een Ubuntu-gast somt de tweede DNS-instellingen per link op, en de derde onthult vaak alleen een lokaal stubadres, wat betekent dat de echte upstream elders zit.
Houd oplossing en bereikbaarheid gescheiden. Een gast die het juiste adres krijgt maar geen verbinding kan openen, heeft een routerings-, filter- of dienstmachtigingsprobleem, en verdere DNS-wijzigingen zullen het nooit raken. Test het adres apart en noteer welke van de twee faalde.
Proxymodus en hostresolver-modus zijn verschillende mechanismen
In proxymodus stuurt de NAT-engine query's van de gast door naar DNS-servers die hij al kent. In hostresolver-modus onderschept hij de query en vraagt het hostbesturingssysteem de naam op te lossen met wat de host nu gebruikt. Alleen de tweede volgt een VPN-client die de hostresolutie herschrijft wanneer de tunnel omhoog komt. Daarom geven de twee instellingen verschillende antwoorden op dezelfde machine.
Dat verschil is het hele probleem in één zin. De gast een lijst met serveradressen geven is niet hetzelfde als Windows vragen een naam via zijn geconfigureerde resolver op te lossen, en op een VPN met gesplitste DNS verschillen de twee antwoorden. De adapteroptie gaat over mechanisme, niet over toestemming.
Geen van beide modi geeft toegang tot iets. Autorisatie leeft in het VPN-beleid en in de dienst, en een werkende lookup betekent alleen dat een naam een adres werd.
Wissel de adapter en verifieer daarna wat de gast ontvangt
Noteer eerst de netwerk- en DNS-instellingen van de VM en schakel dan de machine uit, zodat u de persistente configuratie bewerkt. Voor een VM met de naam work-ubuntu waarvan de eerste adapter NAT draagt, wordt de optie per adapter vanaf de host ingesteld terwijl de VM uit staat. Start hem daarna opnieuw en inspecteer het resultaat in plaats van op de exitstatus te vertrouwen.
VBoxManage modifyvm work-ubuntu --natdnshostresolver1 on VBoxManage showvminfo work-ubuntu --machinereadable | grep -i natdns
Het laatste cijfer selecteert het adapternummer, dus het is geen universele waarde; een instelling voor adapter 2 zou een 2 op die plek dragen. Gebruik het VBoxManage-binary dat bij de geïnstalleerde VirtualBox-versie hoort, want een oudere in het pad kan instellingen schrijven die de draaiende versie negeert.
In plaats daarvan de proxyoptie inschakelen kiest een ander mechanisme en geeft u geen hostresolver-gedrag. Controleer na het starten van de gast de DNS-configuratie die hij werkelijk heeft, want een vastgezette resolver of een versleutelde DNS-instelling in de gast houdt applicaties op een ander pad, ongeacht wat de adapter biedt.
Test over de hele levenscyclus van de VPN, niet slechts één keer
Herhaal beide lookups in de gast, open dan de echte applicatie en laat die de TLS-hostnaam valideren. Een verbindingstest met alleen IP isoleert DNS goed, maar het is geen certificaatcontrole en mag niet als zodanig worden gerapporteerd. Noteer de naam, het adres en het applicatieresultaat samen.
Verbreek en herstel de host-VPN tijdens een goedgekeurd venster en herhaal de test. Het resultaat moet bij het toegangsbeleid passen, en dat publieke resolutie weer werkt zegt niets over de vraag of privéquery's op het bedoelde pad bleven.
Wanneer de hostresolver-modus niets verandert, zet de genoteerde waarde terug en bewaar de observaties. Een VPN-client die hypervisorverkeer uitsluit, een onbereikbare interne resolver en een vastgezette gastinstelling vragen elk een andere correctie, en de adapter bruggen verandert het netwerkontwerp in plaats van DNS te resetten.