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 (Hurricane Electric) – https://tunnelbroker.net/
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 – https://www.sixxs.net/
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
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
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