If you’re white and nerdy, like me, you know that your small victories aren’t like other peoples’ small victories. Today’s small victory is IPv6.
I has it.
At this very moment, this blog can be served to you, or may already be served to you, over IPv6 if you have it too.
Setting it up on your home-built router isn’t straight-forward, especially if your ISP doesn’t offer IPv6 – you have to find a tunnel broker. (I’m using Hurricane Electric, which provides free /64 and /48 tunnels.) Clients seem to work fairly automatically. Have fun figuring out all the little things you need to tweak on your router, though.
Things to note:
- hostapd seems to knock off the IPv6 address of your wireless NIC when you start it – you need to re-add the address by hand, like this:
ifconfig wlp3s6 inet6 add 2001:470:891a::/48
- dnsmasq has a special tag to automatically read addresses from devices, called ‘constructor’, which is easier than copying your dynamic tunnel everywhere:
- You may use the IPv6 equivalent of ‘private’ IP addresses, but you don’t need to anymore.
- dyn.com hides their non-typical DNS record types, and you have to enable the ‘expert interface’ to see AAAA and other record types, but otherwise there’s no difference in setting up dynamic host addressing.
- One quirk that may not be immediately obvious: You don’t need to have separate IPv6 CNAME records. An IPv6 client will check the CNAME, pull the destination hostname, then pull the AAAA record.
- Most network tools have IPv6 equivalents –
pingdoesn’t work with IPv6 addresses, but
- There’s a special format for using an IPv6 address in a web browser: http://[2001:470:1f06:2a3::2]/ if you go direct to the blog’s ipv6 address today.
But besides all that, it really works!
$ ping6 -c1 jonesling.us PING jonesling.us(quinnjones-2-pt.tunnel.tserv4.nyc4.ipv6.he.net) 56 data bytes 64 bytes from quinnjones-2-pt.tunnel.tserv4.nyc4.ipv6.he.net: icmp_seq=1 ttl=64 time=0.508 ms --- jonesling.us ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.508/0.508/0.508/0.000 ms