Recently I decided the Packetlife web server would be a great testbed for IPv6 access given its position on the Internet. Unfortunately, my host, Slicehost, doesn't yet support IPv6 to its servers (though I hear it's in the works), so IPv6 connectivity can only be accomplished using an IPv6-in-IPv4 tunnel. This isn't a problem though, as a number of companies graciously offer free tunneling service to promote IPv6 adoption. One such company is Hurricane Electric, which offers automated registration and IPv6 tunnel configuration at tunnelbroker.net.
To create a tunnel, first you'll need to register an account with the standard contact information. Once logged in, follow the "Create Regular Tunnel" link under "User Functions" to get started. You'll need to provide a public IPv4 address which can be reached using protocol 41 (IPv6-in-IPv4), which means it cannot reside behind a NAT boundary. You'll also be prompted to select which HE server at which you want the tunnel to terminate.
After submitting this information, the tunnel will be automatically created on the HE server, and you'll be directed to a page containing your new tunnel's address.
The tunnel details include the IPv4 and IPv6 addresses for the server (the HE end of the tunnel) and the client (your end of the tunnel). You can also optionally configure reverse DNS delegation for the IPv6 address. Toward the bottom of the page, HE provides instructions for tunnel configuration in a variety of syntaxes. For example, here's how I would configure my tunnel if I wanted to terminate it on an IOS router:
Router(config)# interface tunnel0 Router(config-if)# ipv6 address 2001:470:1f06:bb3::2/64 Router(config-if)# tunnel source 184.108.40.206 Router(config-if)# tunnel destination 220.127.116.11 Router(config-if)# tunnel mode ipv6ip Router(config-if)# ipv6 route ::/0 tunnel0
However, I opted to terminate my tunnel directly on the Linux server which hosts the website. The configuration details tend to vary between distributions, but ultimately the server ends up with a tunnel interface configured with an IPv6 address:
$ ifconfig he6 he6 Link encap:IPv6-in-IPv4 inet6 addr: 2001:470:1f06:bb3::2/64 Scope:Global inet6 addr: fe80::d114:4051/128 Scope:Link UP POINTOPOINT RUNNING NOARP MTU:1480 Metric:1 RX packets:1831 errors:0 dropped:0 overruns:0 frame:0 TX packets:2422 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:246941 (241.1 KiB) TX bytes:2441039 (2.3 MiB)
After tweaking the server's Apache configuration and creating the necessary DNS records, I'm happy to declare Packetlife.net is now reachable via IPv6 at
http://[2001:470:1f06:bb3::2]/! Updated: The tunnel has been deactivated since a server mode. Sorry!