Hoe geef je prioriteit aan IPv4 boven IPv6 in Windows-netwerken?

Wanneer een Windows-computer verbinding maakt met een netwerk waar zowel IPv4- als IPv6-adressen voor een host beschikbaar zijn, probeert deze doorgaans eerst verbinding te maken via IPv6. Dit komt doordat Windows standaard IPv6 een hogere prioriteit geeft als de DNS of mDNS (Multicast DNS) zowel AAAA- (IPv6) als A-records (IPv4) vindt. Het probleem is echter dat sommige oudere apps of bepaalde netwerkservices IPv6 niet ondersteunen. Deze zullen vastlopen of mislukken als Windows per se IPv6 wil gebruiken voor de verbinding. Daarom moet je Windows soms handmatig laten weten dat het eerst IPv4 moet proberen.

In sommige lokale netwerken, met name eenvoudige werkgroepen zonder een eigen DNS-server, gebruikt Windows broadcastquery’s via mDNS om hostnamen op te lossen. U kunt controleren welke DNS-records er voor een specifieke computer in uw netwerk worden opgehaald door het commando `pip` uit te voeren Resolve-DnsName DESKTOP-ABCD1234. Opvallend is dat u vaak zowel AAAA- (IPv6) als A- (IPv4) records ziet. Wanneer u de hostnaam pingt, probeert Windows mogelijk eerst het IPv6-adres, wat problemen kan veroorzaken als het netwerk of de applicatie nog niet geschikt is voor IPv6.

Eerlijk gezegd is het volledig blokkeren van IPv6 niet aan te raden, omdat dit de netwerkfunctionaliteit van Windows en bepaalde services kan verstoren. Het is beter om in plaats daarvan de prioriteitsinstellingen aan te passen.

Om te zien hoe Windows bepaalt welk adres te gebruiken, kunt u het huidige prefixbeleid raadplegen met:

netsh interface ipv6 show prefixpolicies

Of, als je liever PowerShell gebruikt:

Get-NetPrefixPolicy

Deze tabel geeft een overzicht van adressoorten en hun prioriteit. Hoe hoger de prioriteit, hoe groter de kans dat Windows dat adres kiest voor verbindingen. Veelvoorkomende voorbeelden zijn:

  • ::1/128— lokale loopback (hoogste prioriteit)
  • ::/0— standaard IPv6-adres
  • ::ffff:0:0/96— IPv4-gemapte IPv6-adressen
  • ::/96— IPv4-adresvoorvoegsel in IPv6

Als Windows de voorkeur geeft aan IPv6, maar je weet dat je apps en apparaten de voorkeur geven aan IPv4, kun je dit aanpassen met:

netsh interface ipv6 set prefix ::/96 60 3En

netsh interface ipv6 set prefix ::ffff:0:0/96 55 4

Deze commando’s verlagen de prioriteit van IPv6, waardoor Windows bij het oplossen van hostnamen de voorkeur geeft aan IPv4-adressen. Het werkt vrij soepel – opnieuw opstarten is niet nodig, test het gewoon nogmaals met een ping en kijk of het IPv4-adres in plaats daarvan wordt weergegeven.

Om uw wijzigingen te controleren, kunt u de prefix-beleidsregels opnieuw raadplegen met ` get-NetPrefixPolicy`netsh interface ipv6 show prefixpolicies of `get-NetPrefixPolicy`.Als er iets misgaat of als u de wijzigingen ongedaan wilt maken, kunt u de beleidsregels terugzetten naar de standaardinstellingen met:

netsh interface ipv6 reset

Als u liever op registerniveau aanpast of een permanentere instelling wilt, kunt u een DWORD met de naam DisabledComponents toevoegen in HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters. Door de waarde in te stellen op ‘disabledComponents 0x20‘ geeft u Windows de opdracht om IPv6 minder prioriteit te geven. Voer hiervoor het volgende commando uit:

reg add HKLM\system\currentcontrolset\services\tcpip6\parameters /v DisabledComponents /t REG_DWORD /d 0x20

Als u deze instelling wilt terugzetten, stelt u de waarde weer in 0x0op:

reg add HKLM\system\currentcontrolset\services\tcpip6\parameters /v DisabledComponents /t REG_DWORD /d 0x0

En ja, als je dit uitrolt naar meerdere machines in een domein, is het implementeren van die registerinstelling via Groepsbeleid een optie — je hoeft dan niet meer elke pc handmatig in of uit te schakelen.