IPv6 with OpenWRT and SixXS

WNDR3700v2 Package

WNDR3700v2 Package

Lately I wanted to try using IPv6. The first part I needed was an IPv6 capable router. Since I was always interested running Linux on my router I picked one which is ready to run OpenWRT on it. Netgear WNDR3700 seems to match my needs: Pretty common in the OpenWRT community, 16 MiB flash (4 MiB is the absolute minimum, 8 MiB should be fine for IPv6 use. More flash, more space to play with :-)). But take care: Lately Netgear made a new revision, v3, which is not compatible with OpenWRT, or at least no yet.


My provider says he is still working on implementing IPv6, he don’t know when it’s ready, but it should be in the next months… That’s way too long 🙂 So I decided using one of these tunneling solutions. Wikipedia has a list of tunnel brokers, I chose SixXS. After Signup you have to wait some hours until your account request is being processed. After the approval you get a username, password and 25 credits. These credits are needed to get a tunnel and your own subnet, for each of them you need 15 credits, which makes 30 for both. The first thing you do is requesting a tunnel. Some hours later, you should get a tunnel approval with your Tunnel Id. You can earn 5 credits by operating the tunnel a week. So after you have a tunnel, one has to wait another week to request a subnet. For me it took about two hours to get the account and another two hours to get the tunnel, so they are pretty fast!

SixXS has a how-to on their Wiki. Just follow the right instructions and you should get what you want. Nevertheless I describe the setup in detail here. After installing OpenWRT (in my case Backfire 10.03.1-RC5 was the latest release) I had to install some software packages as well. Log-in to your router using SSH.

opkg update
opkg install kmod-ipv6
opkg install kmod-ip6tables
opkg install ip6tables
opkg install ip
opkg install kmod-tun
opkg install aiccu
opkg install ntpclient

Aiccu (Automatic IPv6 Connectivity Client Utility) is a demon which get information about the tunnel and starts it. Edit /etc/config/aiccu using vi and add this text:

config aiccu
       option username         'ABC1-SIXXS'
       option password         '1234'
       option protocol         'tic'
       option server           'tic.sixxs.net'
       option interface        'sixxs'
       option tunnel_id        'T12345'
       option requiretls       '0'
       option defaultroute     '1'
       option nat              '1'
       option heartbeat        '1'

Replace the username, password and tunnel_id with your values. The next command starts the tunnel:

/etc/init.d/aiccu start

Check if your tunnel is working by pinging Google:

# ping6 ipv6.google.com
PING ipv6.google.com (2a00:1450:4001:c01::69): 56 data bytes
64 bytes from 2a00:1450:4001:c01::69: seq=0 ttl=55 time=25.111 ms
64 bytes from 2a00:1450:4001:c01::69: seq=1 ttl=55 time=25.168 ms

Looks good. Because IPv6 needs no NAT “hack’s” to extend the address space you have to assign a own subnet to your clients. This is done using Radvd (Router Advertisement Daemon). Read about that in my next post in about a week…

Update 08.10.2011:
You have to enable the aiccu service to make sure the service is started automatically at bootup and when the WAN interface is reconnected:

/etc/init.d/aiccu enable

(This is the same when clicking on the “Disabled” button under System => Startup.)

Leave a Comment