Update: Please read my other post on pulling the plug on 6to4. Note that the bellow article is for experimental purposes and might impact the user experience.
Being IPv6 capable and one in the crowd is obviously cool, but has some limitations. One of this limitations are services you can access. For example, being IPv6 capable and using P2P is an obvious NO GO, simply because there is no one to peer with.
Limited user base of IPv6 is also one of main facts why content providers still excuse themselves for not offering native IPv6 service, and a reason you would probably get a strange look from your boss when you approach him with an IPv6 implementation offer :)) (not the case for everyone though, lucky me 🙂 )
OK, so lyrics aside! Are you a Windows 7 user? If the answer is yes, continue reading.
It might be some time till your service provider offers native dual stack capability. However, thanks to Microsoft (Windows 7 at this point has probably the best implemented IPv6 stack) you are IPv6 capable today!
Windows 7 natively supports a bunch of transition mechanisms, such as 6to4, ISATAP, Teredo. They are all enabled by default in your Windows 7 installation, which means you are probably doing IPv6 traffic today without even noticing it.
Most publications on the internet will teach you how to shut this all down, I however, will give you some insights regarding its usage.
I will not go into the smallest details, assuming that if you are reading this, you are probably doing well with your PC. I will focus the below description on the 6to4 transition mechanism. I am also providing just the bare details and if you really wish more try this web page.
The main prerequisite for having 6to4 working is a Windows 7 machine with a public IPv4 address. This is the case for most computers and service provider offerings today (soon to end).
Now lets first see if we are really IPv6 capable at this point.
First of all open the Command Prompt (Start->Accessories->Command Prompt). The best way to open it would be by right clicking the application and select Run as Administrator (to avoid future hassles).
After opening the prompt, simply type ipconfig and check if you have anything similar:
Tunnel adapter 6TO4 Adapter:
Connection-specific DNS Suffix . :
IPv6 Address. . . . . . . . . . . : 2002:5ef3:75a5::5ef3:75a5
Default Gateway . . . . . . . . . : 2002:c058:6301::c058:6301
If it works, you should have an IPv6 as the above with 2002::. The 6to4 addresses are build using the following formula: 2002:IPv4in HEX::IPv4inHEX, so, actually your IPv4 prefix is mapped to an IPv6 address.
OK, so, if the address is there try and ping:
if it works, you will see responses.
Also, you can open your browser and browse to http://ipv6.orange.md, which is an IPv6 only server and won’t open unless you are IPv6 capable.
If the above worked for you, lets continue.
As 6to4 is a transition mechanism only, and relies on external to your service provider relays, it is obviously quite unstable, and might give you less bandwidth throughput then your normal IPv4 service. If it works, it works, and if it doesn’t there is really no one to blame. For this reason, Windows 7 will not prefer the 6to4 IPv6 address to your IPv4 address, meaning that, going to http://ripe.net or trying http://whatismyv6.com/ will tell you are using IPv4, where http://test-ipv6.com/ or http://ipv6-test.com/ will detect your IPv6 address, but will state that your machine prefers IPv4 over IPv6. This means that any network usage you do will be IPv4 only, unless the content you are trying to reach is IPv6 only (quite rare today). This might be ok for most, but not for the pervert networkers mind 🙂
How to make your machine prefer the 6to4 over IPv4, allowing to access the IPv6 capable servers natively? It is easy:
In your command prompt type:
>netsh interface ipv6 show prefixpolicy Precedence Label Prefix ---------- ----- -------------------------------- 5 5 2001::/32 10 4 ::ffff:0:0/96 20 3 ::/96 30 2 2002::/16 40 1 ::/0 50 0 ::1/128
The above is the default preference usage table where
10 4 ::ffff:0:0/96 is the IPv4 address, which seems to be less preferred then the 2002::/16 and could make you think this is the case. This is not true though. Looks like the Winodws 7 mechanism also takes the labels into consideration, and will prefer the label match when choosing the protocol to use. For instance, if you try to access an IPv4 website natively your source address label will be 4 and so will be your destination address label. However, when you will try to access an DS(IPv4IPv6) website over IPv6, you will use 6to4 ip address label of 2 to reach the destination with the label of 1 (native IPv6). This will make the selection algorithm prefer IPv4 over 6to4.
To correct the situation, you should change the prefix policy label to be the same as the native IPv6 label (1). To do that type the following:
netsh int ipv6
set prefixpolicy ::ffff:0:0/96 10 4
set prefixpolicy ::/96 20 3
set prefixpolicy 2002::/16 30 1
set prefixpolicy ::/0 40 1
set prefixpolicy ::1/128 50 0
The above will make the 6to4 preferred over IPv4. Going or pinging any of the above mentioned websites will make you use the IPv6 transport (remember though, it might be not as fast or stable as your IPv4).
NOTE: You should type the policy entirely, otherwise, after a reboot you might end up with only the string that has been modified in the service policy, and it will not work properly. Trying to modify a non existing policy will return an error like “Item not found”. There is a workaround for that. In your command prompt, simply type
netsh int ipv6 reset
To make things more fun, you can even go further, and for instance, change your providers DNS address with the HE forwarder in the network settings (188.8.131.52). It is white listed with Google, and will make you browse all the Google services in a native manner, which should be more than enough for experiments you do with your machine.