Test the future version 6 of the Internet Protocol.

Nov 2, 2006 10:11 GMT  ·  By

The Internet is expanding into many new areas such as mobile Internet, IPTV and other IP embedded services which require more and more new IP addresses every day. The growth of IP based services and devices will stretch the current Internet protocol beyond breaking point because in a few years, there will be no more IPs available.

The main reason (and benefit) for IPv6 initial deployment is the vastly increased address space compared to its predecessor IPv4. To get a general idea, IPv4 currently supports approximately 232 which equals about 4.3 billion IP addresses. If you compare it to the number of persons around the globe, it won't even be enough to assign one single IP to every living person. IPv6, however, supports 2128 addresses. This is approximately 5x1028 for each of the 6.5 billion people alive today or the possibility to add an address to each atom in the average person's body. I think that should be enough for everyone.

Unfortunately, at the moment, the Internet is still dominated by IPv4 and very few of the ISPs offer IPv6 connectivity. So, in order to test the v6 protocol, you will have to create an IPv6-in-IPv4 tunnel that will use the existing IPv4 infrastructure to encapsulate and carry IPv6 packets. Such tunnels are widely deployed today. To create a 6to4 tunnel, you will have to search on your favorite engine for "ipv6 tunnel broker" and pick the one closest to you (evidently, for low pings and high connectivity).

Getting Ready

Support for IPv6 is a default functionality in modern Linux distributions. However, in order to be certain, let's first test if your Linux system is IPv6 ready:

- Check whether you have the line:

NETWORKING_IPV6=yes

in /etc/sysconfig/network. If not, add/modify it accordingly. NOTE. This is the default location for the network file in Fedora Core Linux. In other distributions, this location may vary.

- Next, check for IPv6 support in the running kernel:

# test -f /proc/net/if_inet6 && echo "Running kernel is IPv6 ready"

If this command fails, it's most likely you don't have the ipv6 module loaded in the kernel. You "could" try to load it by executing:

# modprobe ipv6

- Test if the network interfaces are configured with global IPv6 addresses:

# ifconfig | grep inet6

should print the IPv6 addresses for each interface your system currently has. Also, you could test it with the ping6 utility.

- You will need to have an external IP address which can be accessible from the Internet. The 6in4 tunnel requires direct connectivity and will NOT work if you are behind a router with NAT only.

- Finally, you will need to install radvd service which is used for auto configuring IPv6 addresses on computers in a local network. On a Fedora system simply type:

# yum install radvd

Luckily, once your system is configured to support IPv6, the installation will be pretty straightforward.

Creating a IPv6-in-IPv4 tunnel

There are a lot of tunnel brokers out there and most of them work in the same way. The secret is to find a tunnel broker that is close to you so you won't have high latency and packet loss when using IPv6. I've used BT Exact Tunnel Broker. What you will have to do is to:

- Open BT Exact Tunnel Broker website in your favorite browser

- Create a new account and log in with it

- Click on "Create a new tunnel" and provide the necessary information:

> Tunnel type (Host/Subnet): Select Host if you only want to use IPv6 on a SINGLE computer or Subnet if you want to set your server AND the computers in your LAN to use IPv6. Select Subnet as you never know when you are gonna need another IPv6 IP.

> Tunnel name: Enter here a name for your tunnel. This isn't used anywhere, just for you to know which is which if you have a lot of tunnels configured.

> Your IPv4 address: Enter here your external Internet IP which is accessible from anywhere.

> Operating system: Guess what.

> Router: It's safe to ignore this section.

- Click Create. Hopefully, you will be informed that the IPv6 tunnel has been created successfully.

You will receive an email from BT Exact containing two scripts, one for starting IPv6 support and one for stopping it. Simply copy the start-up script, paste it in a text file and save it as ipv6-start.sh. Do the same with the stop script and save it ipv6-stop.sh. Finally, make them executable with:

# chmod a+x ipv6-start.sh # chmod a+x ipv6-stop.sh

And start using IPv6:

# ./ipv6-start.sh

If you have been informed by the script that IPv6 configuration has been completed successfully, it's time to test your tunnel:

- Using ping6 to ping your tunnel endpoint (the ip address from the script received on mail which ends with /128):

# ping6 2001:618:400::c266:facd PING 2001:618:400::c266:facd(2001:618:400::c266:facd) 56 data bytes 64 bytes from 2001:618:400::c266:facd: icmp_seq=0 ttl=64 time=0.051 ms 64 bytes from 2001:618:400::c266:facd: icmp_seq=1 ttl=64 time=0.056 ms 64 bytes from 2001:618:400::c266:facd: icmp_seq=2 ttl=64 time=0.058 ms

- Using ping6 to ping an external host using IPv6:

# host -t aaaa 6bone.net 6bone.net has IPv6 address 2001:5c0:0:2::24

# ping6 2001:5c0:0:2::24 PING 2001:5c0:0:2::24(2001:5c0:0:2::24) 56 data bytes 64 bytes from 2001:5c0:0:2::24: icmp_seq=0 ttl=55 time=320 ms 64 bytes from 2001:5c0:0:2::24: icmp_seq=1 ttl=55 time=304 ms 64 bytes from 2001:5c0:0:2::24: icmp_seq=2 ttl=55 time=291 ms

Voila! Your computer is now IPv6 ready. You can now use the services and applications that support IPv6.

Review image
Review image
Review image
Review image