Back when I had first installed either Vista or Windows 7 at home, I immediately had a network problem. I solved the problem by unchecking the IPv6 protocol in the Local Area Connection adapter. It solved my problem then and the network became stable immediately upon restart. Working on a similar problem, simply unchecking the protocol was not enough. Fortunately, Microsoft provides an article on more thoroughly disabling IPv6 on Windows 7, Vista, Windows Server 2008, and Server 2008 R2.
Microsoft’s KB article 929852 covers the registry key that you can put in place and configure to disable various components of IPv6. As long as you are not using IPv6 (and you may not want to if your infrastructure isn’t in place to support it), you can disable IPv6 and re-enable it by simply changing the value of a registry key.
The Microsoft KB article provides a number of Microsoft Fix it tools that configure your PC to have IPv6 disabled, IPv4 preferred over IPv6, IPv6 disabled on nontunnel interfaces, IPv6, disabled on tunnel interfaces, or disabled on both interfaces except the loopback. They also provide the Fix it tools in order to re-enable each of those settings.
For something as simple as a single registry key, I like to make the changes myself and Microsoft details that in the Let me fix it myself section.
- Open up Regedit and drill down to \HKLMSystemCurrentControlSetServicesTcpip6Parameters
- Create a new DWORD (32-bit) Value named DisabledComponents if it doesn’t already exist.
- Set the value of that new value to 0xffffffff in order to disable all IPv6 components but the IPv6 loopback interface.
- Restart your computer for the setting to take effect.
This solved the problem of a server clinging to its IPv6 address even after unchecking the IPv6 protocol in its NIC’s adapter settings. Now the service is more stable and the routing is simplified until the infrastructure is configured correctly when all the networking appliances can handle IPv6.
If you would like a different configuration such as IPv4 preferred over IPv6, you can use these values:
- Type 0 to enable all IPv6 components. (Windows default setting)
- Type 0xffffffff to disable all IPv6 components, except the IPv6 loopback interface. This value also configures Windows to prefer using Internet Protocol version 4 (IPv4) over IPv6 by modifying entries in the prefix policy table. For more information, see Source and Destination Address Selection.
- Type 0x20 to prefer IPv4 over IPv6 by modifying entries in the prefix policy table.
- Type 0x10 to disable IPv6 on all nontunnel interfaces (on both LAN and Point-to-Point Protocol [PPP] interfaces).
- Type 0x01 to disable IPv6 on all tunnel interfaces. These include Intra-Site Automatic Tunnel Addressing Protocol (ISATAP), 6to4, and Teredo.
- Type 0x11 to disable all IPv6 interfaces except for the IPv6 loopback interface.