Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I have IPv6 connectivity through Hurricane Electric tunnel. Since IPv6 day this year, many services (google.com, facebook.com, etc.) enabled IPv6 on their main domains. On my Windows machine, IPv6 is preferred over IPv4. This means that whenever I visit Google, all traffic goes through my tunnel to Hurricane Electric, which raises the latency by more than 100%:

C:\> ping www.google.com

Pinging www.l.google.com [2001:4860:8005::68] with 32 bytes of data:
Reply from 2001:4860:8005::68: time=85ms
Reply from 2001:4860:8005::68: time=84ms
Reply from 2001:4860:8005::68: time=112ms
Reply from 2001:4860:8005::68: time=86ms

Ping statistics for 2001:4860:8005::68:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 84ms, Maximum = 112ms, Average = 91ms


C:\> ping -4 www.google.com

Pinging www.l.google.com [173.194.79.103] with 32 bytes of data:
Reply from 173.194.79.103: bytes=32 time=28ms TTL=48
Reply from 173.194.79.103: bytes=32 time=28ms TTL=48
Reply from 173.194.79.103: bytes=32 time=55ms TTL=46
Reply from 173.194.79.103: bytes=32 time=29ms TTL=46

Ping statistics for 173.194.79.103:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 28ms, Maximum = 55ms, Average = 35ms

Question: How can I make Windows 7 to always prefer IPv4, when both IPv4 and IPv6 records are available for a specific domain name?

share|improve this question
2  
The proper way for this, on most operating systems, is to configure the prefix policy – on Windows, via netsh interface ipv6 show prefixpolicy. I might post a more detailed answer tomorrow. –  grawity Jun 14 '12 at 0:30

3 Answers 3

If monospace text and tables with strange numbers and symbols scare you, you can do this with Microsoft Fix-its, simple installers from Microsoft which make the configuration changes for you.

These fix its come from KB 2533454, which explains that you would want to do this if your IPv6 connectivity is broken. You need to be an administrator to run the fix its.

share|improve this answer

The most simple way, and these are always so simple we overlook them...

  1. open Network and Sharing Center.

  2. There click on Change Adapter Settings

  3. On the "Menu Bar" Click on Advanced. **Note..If you only see "Organize" then click that, and then from the drop down choose "Layout - Menu Bar"

  4. After clicking advanced in the previous step, click "Advanced Settings" in this step (A box will open on your screen)

5.What is displayed is adapters and settings and the adapter you are currently using will already be highlighted on the top half and its representative breakdown below (you should see bindings for that adapter). Highlight any one of the bindings in the list and you should notice the arrows to the right light up, use those arrows to change the binding order to your preference and then choose ok from the bottom.

  1. Note that just like when you install a protocol, service, or client in your adapter properties. Same applies here. which is that you change one adapter, and the rest follow suit. So, for instance, if you choose IPV6 prefer over 4 on your wireless adapter, Your LAN adapter changes also.

It's the easiest way I can think of to do this particular task without having to think too much about, or having too much knowledge about the routing of packets on an inter network.

share|improve this answer
up vote 14 down vote accepted

Solution #1: Add a prefix policy to prefer IPv4 addresses over IPv6

Prefix policy table is similar a routing table, it determines which IP addresses are preferred when making a connection. Note that higher precedence in prefix policies is represented by a lager "precedence" value, exactly opposite to routing table "cost" value.

Default Windows prefix policy table:

C:\>netsh interface ipv6 show prefixpolicies
Querying active state...

Precedence  Label  Prefix
----------  -----  --------------------------------
        50      0  ::1/128
        40      1  ::/0
        30      2  2002::/16
        20      3  ::/96
        10      4  ::ffff:0:0/96
         5      5  2001::/32

Note that IPv6 addresses (::/0) are preferred over IPv4 addresses (::/96, ::ffff:0:0/96).

We can create a policy that will make Hurricane Electric IPv6 tunnel less favourable than any IPv4 address:

netsh interface ipv6 add prefixpolicy 2001:470::/32 3 6

2001:470::/32 is Hurricane Electric's prefix, 3 is a Precedence (very low) and 6 is a Label.

I could have used a more generic prefix, but I wanted to make sure than if and when I get a direct IPv6 connectivity from an ISP, it will take precedence over IPv4.

If you adapt this solution, you need to substitute an appropriate IPv6 prefix instead of my Hurricane Electric one.

Solution #2: Tweak registry to make Windows always prefer IPv4 over IPv6

This solution is more generic, but more invasive and less standards-compliant. In the end, Windows will still modify the prefix policy table for you.

  • Open RegEdit, navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters
  • Create DisabledComponents DWORD registry value, set its value to 20 (Hexadecimal). See Microsoft KB 929852 for more info about this registry key, especially if DisabledComponents already exists on your system.
  • Reboot.
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.