Online Support

IPv6

IPv6

What the System Administrator and Architect Need to Know about IPv6

IPv6 is something programmers and architects routinely ignore.  But the future tells us that this is a topic that should be on the planner’s radar.
The IPv4 address nnn.nnn.nnn.nnn is 4 octets of 8 bits.  There are 4.3 billion possible IP addresses you can make with those 32 bits.  But there are already more than 4.3 billion devices attached to the internet. And with IoT and the growth in the internet in developing nations there will be billions more.  128 bit IPv6 will allow many trillions of different IP addresses. Thus, we should never run out.

NAT Delays the Inevitable

The world has been able to ignore this problem because of NAT.  That is where an internet-facing router has one IP address but all the devices on the internal network use internal ones. In other words, your office PC might have the IP address 192.168.1.204.  It does not matter that someone also has that same number in thousands of other offices around the world.  Only the router’s public IP address must be unique.  An ISPs can also do NAT on a super large scale if they run out of address.

On a global perspective, some regions of the world have already run out of IPv4 IP addresses. New customers of Microsoft Azure in the USA, for example, have been assigned IP addresses from companies in Ireland and Brazil who had extra ones to sell.

The IPv6 IP address is an odd-looking number for those who have not studied that.  It is 8 groups of hexadecimal digits like this:
FFFF:FFFF:FFFF:FFFF:0000:0000:0000:0000
For example the IPv6 address on the computer where I am writing this document is fd76:c748:8948:1:22bd:76b2:b8ce:9bb6.  Facebook’s IPv6 address is 2620:0:1cfe:face:b00c::3.

Facebook, Google, Yahoo!, Akamai, and Limelight Networks way back in 2001 had a World IPv6 Day.  The goal was to check dual-stack systems, meaning web servers that support both IPv4 and IPv6 at the same time, to test the future transition.

That this was 6 years ago.  Not much has changed since then leading people to characterize this as a Chicken and the Egg Problem.  That saying is of course a paradox that wonders which came first, the chicken or the egg. To use another hackneyed phrase, Should We Build it and They Will Come or do we wait until they come and then build it? Since everything is working fine today, there is not much impetus for change.

Google tracks the roll out of IPv6 on this website.

One system that has adopted IPv6 is Cloudflare.  That is the a massive CDN (content distribution network) used by large numbers of websites and ISPs.  In 2016 they reported that 98% of their customers are using IPv6.  But what do they mean by that? They mean that traffic going from one data centre to another and across their CDN internet and other backbones is using IPv6. For example, Cloudflare says that 81% of Facebook’s Cloudflare traffic is IPv6. But it does not mean traffic going from home users to those websites are using IPv6 to that great extent.

Does IPv6 work on your Machine?

Does your machine support IPv6? The Ubuntu computer I am using to write this document on has some IPv6 traffic right now.  You can check your machine too by typing:

sudo tcpdump -i eno1 -vv ip6

Where en01 is the name of the network interface.

But all the traffic I see are icmp6 sum ok, which indicates some ping activity.  But when I go to this website to check whether I can connect to IPv6 websites the traffic comes alive showing that this indeed works:

[icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has fd76:c748:8948:1:21e2:57c:6c47:1073
source link-address option (1), length 8 (1): fc:b4:e6:71:7e:20
    0x0000:  fcb4 e671 7e20
16:29:27.382616 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) openrg.home > ff02::1:ff47:1073: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has fd76:c748:8948:1:21e2:57c:6c47:1073
source link-address option (1), length 8 (1): fc:b4:e6:71:7e:20

How to Enable IPv6 in Nginx

You can check your Apache or Nginx web server and domain DNS records to see if you support IPv6.

First your domain needs an IPv6 AAAA record.  Check that:

dig storminternet.co.uk aaaa

Storm Internet has one:

storminternet.co.uk.    300     IN      AAAA    2400:cb00:2048:1::6819:8d66

Then your version of Nginx must be compiled with IPv6 support:

nginx -V | grep -i ipv6

It should say “--with-ipv6.”

The default config file should already have IPv6 enabled:

listen [::]:80 default ipv6only=on;

Test it using curl:

curl -g -6 "http://[::1]:80/"

Notice that you put the IPv6 IP address between [] brackets.

At Storm Internet we can support IPv6 should customers require it. So far there has been very little demand for it. The problem has mainly been down to devices not yet being made compatible. Web sites hosted on an IPv6 address will only work if the local device (i.e. your smartphone or desktop) have the relevant protocols in place. In short if you enable IPv6 only for a web site, you’ll likely find the corresponding web site won’t show on a lot of devices.

If you’d like super-fast hosting for your web site, call us on 0800 817 4727. We’ve been providing ultra fast, secure web hosting services since 2004 and know a thing or two about optimising servers and sites for speed.

0800 817 4727