Now that IPv6 is a thing on the internet I decided that it would be a good idea for me to learn the basics on how it works and how it can be applied to customer networks. There is no better way to learn a technology then to jump in and get yourself dirty with it. So with that in mind I decided that I would set it up on my home networks.

Step 1: Setup the service.

The first step (if your ISP doesn’t support IPv6) is to sign up for a 6in4 tunnel service. My ISP doesnt support IPv6 on residential connections so I signed up for a tunnel service. There are a few around such as

Tunnel Broker were GREAT to deal with. The sign up process is easy and you can automatically request a /48 subnet and it is just added to your account. The downside, no POPs in Australia. With the closest being Singapore it added 500ms to the latency

SixXS is what I am currently using as they have a POP in Sydney (and one in Brisbane which was down at the time of this post). They are pretty straight forward but just a heads up that the process can be a little slow as it all appears to be manually approved by a human. Also the credit system is the worst. Its not a bad idea except that to start with you only get enough credit to open an account and request a tunnel with a /64. I was after a /48 to divide up between my networks. To gain more credits the tunnel needs to be up for a week to gain 5 more credits to make the request.

Next is to setup my D-Link DFL-260e with the tunnel information.

Step 2: Tunnel Setup

You can use either the command line or the web interface to do this, I originally used the web interface, but here at the instructions to use the command line.

#Enable IPv6 on the device
 set Settings IPSettings EnableIPv6=Yes

#Add the local_endpoint_ipv6 object
 add Address IP6Address local_endpoint_ip6 Address=[Your IPv6 Endpoint]/[Prefix Length]

#Add the remote endpoint address
 add Address IP4Address tunnel_server_ip4 Address=[PoP IPv4 Endpoint]

#Add 6in4 tunnel, using the objects created above.
 add Interface IP6in4Tunnel 6in4_tunnel_to_SixXS IP=local_endpoint_ip6 Network=all-nets6 RemoteEndpoint=tunnel_server_ip4

That should be all there is to establish the tunnel. The next step is to test the connection. The following tools

Step 3: Testing

Ping:

 DFL-260E:/> ping -count=4 2404:6800:4006:801::2004
 Sending 4 4-byte ICMP pings to 2404:6800:4006:801::2004 from 2001:4830:1200:8d::2
 ICMP Reply from 2404:6800:4006:801::2004  seq=0  time= 50 ms  HopLimit=59
 ICMP Reply from 2404:6800:4006:801::2004  seq=1  time= 50 ms  HopLimit=59
 ICMP Reply from 2404:6800:4006:801::2004  seq=2  time= 50 ms  HopLimit=59
 ICMP Reply from 2404:6800:4006:801::2004  seq=3  time= 50 ms  HopLimit=59
 
 Ping Results:  Sent: 4, Received:4, Avg RTT: 50.0 ms

Interface Status:

DFL-260E:/> ifstat 6in4_tunnel_to_SixXS
  Iface 6in4_tunnel_to_SixXS
   6in4 tunnel to XX.XXX.XXX.XX from XXX.XXX.XXX.XXX
   Receive Mode  : Normal
   MTU           : 1280
   IP Address    : 0.0.0.0
   IP Address    : [Your IPv6 Endpoint]
   IP Address    : XXXX::XXXX
 
 Software Statistics:
   Soft received :    1442  Soft sent     :    2189  Send failures :       0
   Dropped       :       3  IP Input Errs :       0
 
 Driver information / hardware statistics:
   State         : OPEN

That should be all there is to establish the tunnel. Next time I will setup the DHCPv6 Server to allocate IPs to the machines across different subnets and set the rules to allow traffic to the internet.

Oh. This was also my first wiki article which can be found at https://www.sixxs.net/wiki/D-Link_DFL-260e