Saturday, May 25, 2013

IPv6 with Charter Communications

Update 2014-12-20: OpenWrt BarrierBreaker 14.07 is now available and the setup for IPv6 with Charter Communications is much simpler.  IPv6 configuration can now be done entirely via the web UI.  The instructions below have been updated.

This post describes how I enabled IPv6 on my home network (ISP is Charter Communications). After completing the steps described here the following is true:
  • All computers on my network now have a public IPv6 address (though a firewall limits external access to only some of them).
  • My locally hosted websites are now accessible over IPv6.
  • My web browser can now reach IPv6-only web sites.
  • My web browser now scores 10 out of 10 on IPv6 connectivity tests.
As I write this IPv6 usage is around 5.5% but the supply of IPv4 address is almost exhausted.  The North American Regional Internet Register will distribute its last address blocks in about 5 months. Why not help with the transition by converting your small corner of the net, and learning about IPv6 in the process.

Charter provides an IPv6 border relay: Charter IPv6 6rd Page. Through the relay you get your own /64 of publicly routeable IPv6 addresses-- that's 2^64 = 18 quintillion IP address, an old internet squared, just for you.

Step 1: Install OpenWrt

My router is a Netgear wndr3700v1.  The default firmware does not support 6rd.  I replaced my router firmware with OpenWrt.   I installed the latest version,  "Barrier Breaker Release 14.07".  After installation is complete set the root password:

passwd <set new root password>

Now the router should only be accessible via ssh.

ssh root@

Step 2: Install OpenWrt web interface

OpenWrt builds do not include a web interface by default (only command line), but it is easy to add one.  After installing OpenWrt, I logged into my router (ssh root@ and installed the LuCI web interface.  Five easy LuCI installation commands here. There are also images with LuCI pre-installed.

opkg update 

ppdk install luci
ppdk install luci-ssl
opkg install luci-theme-openwrt

/etc/init.d/uhttpd start
/etc/init.d/uhttpd enable

Step 3: Install OpenWrt packages for IPv6 and 6rd

opkg install 6rd
opkg install luci-proto-ipv6

Step 4: Create an interface for the 6rd tunnel

In Luci Navigate to Network -> Intefaces, then click "Add new Interface..."  Add an interface named "WAN6":

Default Advanced settings.  The firewall tab should look like this:

That's it.  Devices on your network will now be assigned IPv6 addresses in addition to IPv4 addresses.  By default inbound IPv6 connections are blocked by the firewall.  To allow traffic through to one or more IPv6 addresses Network -> Firewall.

I have been using this setup for more than a year now.  At my house everything is dual stack (IPv4 + IPv6) Windows, Linux, phones, tablets, etc.  I recently upgraded to Charter's 100Mb/sec service.  According to IPv6 speed tests I also get close to 100Mb/sec over IPv6.

Relevant links

Let me know

Let me know if this guide was helpful.  Similarly if you find an omission or error let me know, and I'll make updates for the benefit of everyone.