Pourquoi je vais devoir m'interesser bientôt à IPV6 !

La distribution Debian est une excellente distribution, il n'y a pas à revenir sur le sujet. Je l'utilise sur un maximum de supports: pour le serveur dédié qui héberge ce blog, pour ma station de travail à la maison ainsi qu'au bureau. Pour des raisons d'efficacité, à part sur le serveur dédié qui utilise stable, j'emploie testing pour tout le reste. En effet, cela permet de conserver une certaine stabilité tout en ayant des logiciels assez récents. De plus, ça fait déjà quelquetemps que stable est sortie...

Pour mes besoins professionnels, j'utilise BIRT pour générer des rapports. Je fais donc tourner BIRT sur une machine Debian, à l'aide d'openjdk-6 (Java en libre, on l'a longtemps réclamé alors autant l'utiliser) qui permet de faire tourner Eclipse qui permet de faire tourner BIRT. Je ne ferais pas de laius sur mon utilisation de BIRT, ça prendrai trop de temps et ce n'est pas l'objet de cet article.

Après une mise à jour (aptitude update && aptitude safe-upgrade), une partie de BIRT a commencé à ne plus fonctionner: l'interface EClipse se comportait correctement mais, impossible de générer un rapport. Pour mieux comprendre, sachez que BIRT, pour générer un rapport, lance un serveur interne qui écoute sur localhost sur un port au hasard et ouvre un lien vers une page Web à cet endroit.

Le bug se manifestait de la manière suivante: impossible pour le navigateur Web de se connecter au serveur. Et effectivement, le serveur était bien présent mais il était impossible de s'y connecter (en localhost, faut le faire quand même). Au bout de quelques jours, j'ai réellement eu besoin de générer un rapport... Après avoir reglé d'autres tâches, celle-ci est arrivée sur le haut de la pile et j'ai dû m'atteler au problème.

Tout se comportait comme s'il était impossible de joindre le serveur local alors que le service était lancé. Le problème ne venait pas du navigateur Web, ni d'une configuration de proxy, ni d'iptables. Après avoir lu le log d'Eclipse, j'ai eu quelques billes pour chercher sur le BTS Debian. Et au bout de quelques minutes, j'ai trouvé ce que je cherchais: #560056.

Il semble que dorénavant, le kernel Linux soit configuré par défaut en permettant la création de services uniquement sur IPV6 et non IPV4. En effet, le fichier /etc/sysctl.d/bindv6only.conf est utilisé pour configurer le kernel par l'outil sysctl. Il est lancé au démarrage de la machine par le script /etc/init.d/procps. D'après ce que je comprends, cette configuration impose à un démon qui souhaiterait ouvrir un service réseau d'utiliser IPV6 par défaut et non IPV4.

Là où je vais devoir m'intéresser à IPV6 c'est que, de un, je n'y connais pas grand chose et, de deux, les configurations par défaut semblent tourner vers IPV6 en lieu et place d'IPV4, alors que jusqu'ici, c'était l'inverse. J'aime d'ailleurs assez bien la fin du commentaire du fichier /etc/sysctl.d/bindv6only.conf:

# When IPV6_V6ONLY is enabled, daemons interested in both IPv4 and IPv6
# connections must open two listening sockets.
# This is the default behaviour of almost all modern operating systems.