I have been testing IPv6 for work for quite a while already. In fact, we have quietly enable IPv6 for some of our own internal trial users making our network dual-stack. And just couple of days ago, I enabled IPv6 for my blog with CloudFlare, so the next thing has to be my home. :) At home I’m running on the M1 Fibre Broadband with 50Mps down and 25Mbps up.
Hurricane Electric provides free 6-in-4 tunnels and assigns a generous prefix of /64. To give you the magnitude of a how many IPv6 addresses we have with a /64. A biggest private IPv6 allocation that you can use in your network is 10.0.0.0/8. That gives you 24 bits to play with so the number of address you can have in your network is 2^24 = 16777216. Given that the address space for IPv6 is 128 bits, a /64 gives us a remaining 64 bits to play with, which is 2^64. And bear in mind that these are public IP addresses that are routable on the internet as opposed to the 10.0.0.0/8 private addresses which requires NAT to route on the internet. More details can be found all over internet if you are interested in IPv6, so let’s get back to my setup.
Setup at Hurricane Electric
I have a TP-Link WR1043ND at home, flashed with OpenWRT. OpenWRT is Linux-based, so the possibility to extend the features is almost endless. The first thing you need to do is to get a free account from Hurricane at http://www.tunnelbroker.net
After the account is created, login to Hurricane Electric’s interface and create your tunnel. Select “Create Regular Tunnel“
Hurricane Electric will suggest the best endpoint for terminating your tunnel, but I suggest you take a few selections and traceroute to the addresses and select the endpoint with the best latency and least hop count. For me, I took the Tokyo endpoint although I’m in Singapore. The reason is that M1’s route to the Singapore endpoint goes to Japan, then to Hong Kong, US then finally back to Singapore. Bloody inefficient, but I can’t comment more since I don’t have the full picture.
Now On To OpenWRT
So, it’s done on Hurricane Electric. Let’s move on to OpenWRT.
For IPv6 in OpenWRT, you need to install the following packages:
opkg install 6in4
opkg install radvd
opkg install luci-app-radvd
uci set network.lan.ip6addr=’2001:470:23:4ce::2/64′ – <Replace With Your Own Prefix>
uci set network.henet=interface
uci set network.henet.proto=6in4
uci set network.henet.peeraddr=22.214.171.124 – <Replace With Your Own Selected Endpoint
uci set network.henet.tunnelid=122345 <Replace With Your Tunnel ID>
uci set network.henet.username=tb4e8539df5472a9.36849843 <Replace With Your Password>
uci set network.henet.password=’YOUR_PASSWORD’
After this is done, restart your network for the OpenWRT
We are now almost there. Next to setup is the radvd – Linux IPv6 Router Advertisement Daemon.
Enabling IPv6 In Your Network
Enable the options like I did in the screenshot. Very simple steps here. Just make sure that radvd is running and listening on lan0
Now you are ready to test your IPv6 connectivity. I’m using a Mac here, so it’s already IPv6 ready. Linux/FreeBSD/Solaris and other Unix variants should already have IPv6 ready. Windows XP might require a patch though.
Anyway a simple way to verify whether you are accessing the internet on IPv6, is to visit the APNIC website at http://www.apnic.net
You can see your IPv6 address on the top of the page if you are connected to them via IPv6.
And tested on my iPhone 4 running on iOS 4.3.3. Yes, all iOS devices are IPv6 ready too. :)
And you can try http://www.v6.facebook.com. This is the IPv6 Facebook site.
One thing to note that, the IPv6 connectivity is purely for testing. Connecting via a tunnel is actually sub-optimal since the IPv4 endpoint is as far as 14 hops away. There are some apps that doesn’t work too. :) But anyhow, have fun!