IPv6 is here, however its support is not ubiquitous. Although some hosting providers support it, some of the big names don’t offer native support (cought Amazon/Azure).

The first step in setting your IPv6 ip is to check if your hosting provider supports it. The previous hosting company I used (easyspeedy.com) and the current companies (prgmr.com, burst.net) do however, some of the biggest players like Azure (Azure FAQ) and Amazon (Amazon FAQ) don’t. Unfortunately, this means that a lot of other companies built on top of Amazon’s services don’t. The following service providers, although not based on Amazon or Azure, still doesn’t offer IPv6 internet routing (Squarespace, WPEngine, Joyent, Nodejitsu). Some companies offer a tutorial on how to set up IPv6 using he.net tunnels.

The second step is to get an ip. Check if you already have an IPv6 address assigned. Login via ssh and run

sudo ifconfig|grep inet6 

If you’re output has some record like the one from below, you’re in luck.

inet6 addr: 2001:470:1:41:891d:4105:8c8d:2942/64 Scope:Global

If not, contact your provider support team and they may assign you ip addresses. Some providers will give you a /64 class (several billions) others will give you just 10 or 20. Since there are so many IPv6 addresses available (several billions for each person on the planet), these should be free of charge (compared with $10-S20/year for any additional IPv4 address).

Setup the address you received. Tutorials for Ubuntu/CentOS are available online. They are really to find them using your favourite search engine.

Note on setting your IPv6 address: at the moment, cPanel does not support IPv6. According to their site, support for it is coming soon (soon as in 2013-2014). This is somewhat sad, since you won-t be able to set up Apache if you’re also using cPanel.

Verify that your IP is correctly, set up. Use one of the many online sites

Step three is to let others know that you are using IPv6, meaning that all your hosts which have an IPv4 IP should have an IPv6 one. This is done from your hosting provider DNS server (or from your own DNS server). Start by quering your domain, cli whois or online whois. Then log in to your domain provider or DNS server and set up an AAAA record, for each A record. CNAME or MX point to hosts, so nothing to do here. Depending on your DNS TTL (time to live), your new IPs will be available sooner or later.

Step four is to setup the rest of your infrastructure, web server, ssh, and other.

Verify which service is already listening on ipv6 using netstat.

bash$ netstat -nalvt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN

In the previous example, ssh listes on IPv4 (address 0.0.0.0:22) and IPv6 and (address :::22), however mysql listens only on IPv4 (127.0.0.1:3306).

From experience, ssh and mail already listen on IPv6.

The web server, has to be setup, though. Nginx is easier to setup, because you only need to configure it to listen on IPv6, however Apache needs to be then configured for each virtual host (for Apache only).

Once you’ve completed these steps, you can setup an IPv6 only address for your site (e.g. ipv6.site.com or www.ipv6.site.com) and see that you can open it. If this works too, congratulations, you’re ready for the future.