You may have heard that current IP address space (4 billion of IPs) is already fully assigned and there is no free ip addresses left. There is no big panic since ISP and hosting companies have some internal IP reserve. But this definitely leads to quicker deployment of IPv6 protocol.
The main issue is: IPv6 must be supported on both ends of connection: user-end and server-end. It is a classic chicken and egg problem, top few users use IPv6 -> no IPv6 services exists and no services support IPv6 means, why should clients switch to it?
Since there is no IPv6 alternative, service owners must do a big first step and some of them did. Google, Amazon, Rackspace and many others added IPv6 as alternative to IPv4.
Is you site or blog ready to be accessible via IPv6? I think its time to think about it. I did a switch of my Wordpress based blog hosted on Rackspace and here is the story...
IPv4 and IPv6 are used simultaneously so you do not loose any of your client. Adding support of new protocol allows all IPv6 clients have direct and better communication with your site.
# Get your IPv6 address
If you use RackSpace all work is already done, your address is already assigned, just type ifconfig and look for Scope:Global
eth0 Link encap:Ethernet HWaddr bc:76:4e:10:0a:31
inet addr:198.101.158.105 Bcast:198.101.158.255 Mask:255.255.255.0
inet6 addr: <strong>2001:4801:7817:72:147b:1f88:ff10:a31</strong>/64 <strong>Scope:Global</strong>
inet6 addr: fe80::be76:4eff:fe10:a31/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:61450792 errors:0 dropped:0 overruns:0 frame:0
TX packets:3495473 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4594115978 (4.5 GB) TX bytes:3452771236 (3.4 GB)
Interrupt:26
For other providers contact support for this support.
# Prepare your web-server
Configure NGINX
In your default virtual host, change your listen 80 default_server; directive to listen [::]:80 default_server;. This relies upon your system using those hybrid portsIn all of your other virtual hosts, change your listen 80; directives to listen [::]:80;. If you had previously omitted the listen 80; directive (since that’s the default if not specified), you must now add the listen [::]:80; directive.
Note that you can do exactly the same thing with additional ports — I additionally have listen [::]:8080 default_server; in my default vhost, and listen [::]:8080 in my vhost that listens on that port.
Check more details here: http://kromey.us/2011/06/named-based-virtual-hosts-with-nginx-on-ipv6-423.html
Configure Apache
By default Apache will listen IPv6, see below"- Listen *
- Listen 192.168.0.100
- Listen Listen [2001:db8::a00:20ff:fea7:ccea]:80
These vhosts go in /etc/apache2/sites-enabled/nameofyourvhost.conf Set a vhost on all IP’s (both IPv4 and IPv6).
<virtualhost *:80>
ServerName fix6.net
ServerAlias *.fix6.net
DocumentRoot /www/fix6.net/public_html
ErrorLog /www/fix6.net/logs/error_log
Customlog /www/fix6.net/logs/combined_log combined
</virtualhost>
Set vhost to a specific IPv6 only
<virtualhost [2001:db8::a00:20ff:fea7:ccea]:80>
ServerName fix6.net
ServerAlias *.fix6.net
DocumentRoot /www/fix6.net/public_html
ErrorLog /www/fix6.net/logs/error_log
Customlog /www/fix6.net/logs/combined_log combined
</virtualhost>
Set vhost to a specific IPv4 and IPv6 address
<virtualhost 192.168.1.100:80, [2001:db8::a00:20ff:fea7:ccea]:80>
ServerName fix6.net
ServerAlias *.fix6.net
DocumentRoot /www/fix6.net/public_html
ErrorLog /www/fix6.net/logs/error_log
Customlog /www/fix6.net/logs/combined_log combined
</virtualhost>
Check IPv6 connection
Don't forget to restart http service. Ensure that it listens on IPv6:80 port and firewall is open for it.Before
root@blog:~# netstat -ln | grep tcp
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
<strong>After</strong>
root@blog:~# netstat -ln | grep tcp
tcp6 0 0 :::80 :::* LISTEN
# Configure DNS
IPv6 works along IPv4 protocol and its handled by special AAAA DNS record. So when browser resolves domain name to IP address is looks for AAAA record and if it exists it connects to IPv6 address instead to A record.
Rackspace gives you a nice DNS manager to host all your zones absolutely FREE. So just add new AAAA record of IPv6 address from ifconfig output like this:
a32.me. 163 IN AAAA 2001:4801:7817:72:147b:1f88:ff10:a31
# Test and check
Test if your DNS zone was updated
~$ dig aaaa a32.me
; <<>> DiG 9.8.1-P1 <<>> aaaa a32.me
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64646
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;a32.me. IN AAAA
;; ANSWER SECTION:
a32.me. 300 IN AAAA 2001:4801:7817:72:147b:1f88:ff10:a31
;; Query time: 86 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sat Dec 1 11:27:50 2012
;; MSG SIZE rcvd: 52
# http://a32.me/ipv6-site-check/