Activer le support IPv6 de NGinx
Publié le 03 mai 2012 - CMS - Hébergement
Dernière mise à jour le 15 mai 2012
- Article
- |
- Commentaires (1)
- |
- Annexes (0)
Voici un très court billet pour se souvenir de comment activer IPv6 avec NGinx, et pour régler le petit piège des piles IPv4 et IPv6 sous GNU/Linux.

IPv6 et GNU/Linux
Avant de commencer, il faut savoir que par défaut sous GNU/Linux, si votre système écoute sur IPv6, le protocole IPv4 se retrouve encapsulé dans la pile IPv6. Du coup, si certain de vos vhosts écoutent sur IPv4 et d'autres sur IPv6, vous allez obtenir l'erreur suivante au démarrage de NGinx :
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
Pour éviter ce problème, il faut séparer les deux piles IPv4 et IPv6 en modifiant le comportement du noyau à l'aide de "net.ipv6.bindv6only", dont nous devons passer la valeur à 1.
Pour vérifier la valeur sur votre système, utilisez la commande :
sysctl -a | grep net.ipv6.bindv6only
Si le retour est :
net.ipv6.bindv6only = 0
Il vous faut alors ajouter la ligne suivante au fichier /etc/sysctl.conf ou /etc/sysctl.d/bindv6only.conf :
net.ipv6.bindv6only = 1
Ou bien utiliser la commande ci-dessous :
sysctl -w net.ipv6.bindv6only=1
Ainsi vous pourrez écouter sur IPv4 et IPv6 sans souci.
Et IPv6 avec NGinx alors ?
Nous y voilà !
On commence par vérifier que IPv6 n'est pas déjà activé dans NGinx :
root@machine:~# /usr/local/nginx/sbin/nginx -V nginx version: nginx/1.0.14 built by gcc 4.4.5 (Debian 4.4.5-8) TLS SNI support enabled configure arguments: --with-ipv6
Si vous ne trouvez pas de --with-ipv6 dans les "configure arguments", le support d'IPv6 n'est pas présent sur votre installation de NGinx.
Dans NGinx, tous les modules sont compilés avec le coeur du logiciel, vous aurez probablement compris qu'il nous faut alors compiler NGinx avec l'option --with-ipv6 :
./configure --blabla --blabla --with-ipv6 make make install
Maintenant, vous devez vous assurer que NGinx va bien écouter sur l'adresse IPv6 avec, dans le fichier de chaque vhost, la ligne :
listen [::]:80;
Si vous avez le message d'erreur indiqué plus haut lors du redémarrage de NGinx, vous devez spécifier les deux interfaces ainsi :
listen \[::\]:80 ipv6only=on; listen 80;
Le premier listen indique d'écouter sur l'interface IPv6 uniquement, la deuxième d'écouter aussi sur IPv4.
Pour écouter sur une adresse IPv6 spécifique :
listen [2b46:d0c:1:156:ca0a:a9fe:fbc4:f2f1]:80;
Et pour limiter l'écoute à la seule adresse IPv6 :
listen [::]:80 ipv6only=on;
Et voilà, vous pouvez maintenant tester avec netstat que NGinx écoute bien sur l'adresse de votre choix :
netstat -ltunp |grep nginx tcp 0 0 45.91.16.230:80 0.0.0.0:* LISTEN 24537/nginx tcp 0 0 45.91.16.230:443 0.0.0.0:* LISTEN 24537/nginx tcp6 0 0 2b46:d0c:1:156:ca0a:a9fe:fbc4:f2f1::80 :::* LISTEN 24537/nginx
Ne reste plus qu'à mettre en place vos enregistrements AAAA !
Et pour finir, sachez que de nouvelles directives concernant IPv6 seront disponibles à partir de NGinx 1.3. Plus d'infos sur ces directives ici et là.
Source : http://kovyrin.net
-
north face outlets canada · 30 octobre 2012, 23:21
-
Thank you. I just found this blog and what a great resource! It is a good blog and their posts are effective. This is very nice post! I will bookmark this blog. jdwwfb 450179