Disable IPv6 on Loopback address (Localhost, Computer name, ...)

Solution 1:

I had initially checked the host file as SilverbackNet suggested, but on a Windows 2008 R2 server this is the default file:

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost
#   ::1             localhost

# indicates a comment in the host file, so all the entries are commented out, and the first line is a bit confusing. I then noticed that there were two entries for localhost that were commented out, so I tried uncommenting the IPv4 one and it worked! I should have tried that first but I was thrown off track by the first line. Using the below host file pinging the computer name or localhost will always return an IPv4 address, which fixes the problem with the 3rd party software!

# localhost name resolution is handled within DNS itself.
#   ::1         localhost
127.0.0.1       localhost
127.0.0.1       VPS-Web

Solution 2:

Setting "DisabledComponents" = 0x20 under

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\

will set that machine to use IPv4 instead of IPv6 in prefix policies.

Create the registry key if it doesn't exist.


Solution 3:

Have you tried removing the entry from the hosts file in %systemroot%\system32\drivers\etc? That should do it, if you just need "localhost" to always be IPv4. However, if it's based on the server name, this probably won't work.


Solution 4:

The initial ServerFault thread about using the DisabledComponents registry value is really the best way to do this. Hosts file tweaking should never be necessary in a well functioning network. The registry tweak is also much easier to deploy and revert via group policy if you have an Active Directory.

The reason it didn't work is because that DisabledComponents registry setting is read as a set of bit flags and not simply on or off. Here is the official documentation from Microsoft on the subject:
How to disable IP version 6 (IPv6) or its specific components in Windows 7, in Windows Vista, in Windows Server 2008 R2, and in Windows Server 2008

The short version is that to completely disable IPv6 on Vista/2008 and beyond, set the value of DisabledComponents to 0xff. I do this on every machine I manage where we're not explicitly using IPv6. It has the nice side effect of significantly shortening the output of the ipconfig command.