Linux

Un article de IPv6.

Macintosh Table des matières BSD

De nombreuses distributions de Linux existent. Debian, RedHat, Mandrake, Suse en sont quelques unes parmi les plus connues. Une distribution Linux est constituée du noyau Linux proprement dit, et d'un ensemble de programmes (essentiellement d'origine GNU ou BSD) utilisant des librairies. D'une manière générale, pour qu'une distribution Linux fonctionne en IPv6, il faut qu'elle intègre un noyau, des librairies, des scripts de configuration et des applications supportant IPv6. Bien que dérivant de noyaux et d'outils de même origine, chaque distribution a ses particularités. Le programme d'installation est différent, et chaque société ou organisme maintenant cette distribution fait le choix d'intégrer -ou non- des programmes différents en fonction du public visé. Il est donc impossible, dans ce chapitre, de particulariser pour chaque distribution. On donne ici des remarques générales, et on développera l'exemple de RedHat/FedoraCore. Pour les autres distributions, la documentation (ou une recherche sur le Web) permet de trouver les adaptations nécessaires.

La souche IPv6 est intégrée officiellement au noyau depuis les versions 2.2, mais ces noyaux étaient incomplets et non conformes aux RFC. Les noyaux 2.4 sont plus corrects, mais eux aussi présentent quelques lacunes. Les noyaux 2.6 sont donc préférables ; ils intègrent un partie des développements du projet japonais USAGI, en particulier la sécurité (IPsec). Il faut aussi un noyau compilé avec l'option IPv6 (dans le noyau ou en module). Ce type de noyau est en général disponible dans tous les distributions (au moins comme paquetage optionnel).

Les applications, quand à elles, doivent utiliser une librairie C supportant IPv6. La GNU Libc 2 intègre correctement le support IPv6 à partir de la version 2.2 de la Glibc. Aussi, il est important d'utiliser une distribution Linux qui réponde à ces critères.

C'est le cas des distributions récentes, par exemple Debian (version Woody ou supérieure), RedHat ≥ = 7.1, Mandrake ≥ = 8.0. Cette liste n'est bien entendu pas exhaustive.

Sommaire

Linux RedHat et FedoraCore

Linux RedHat et FedoraCore proposent IPv6 en standard depuis la version RedHat 7.1. La bibliothèque libc et la plupart des applications supportent IPv6 (sauf RPC et NFS). Pour le cas le plus simple (machine utilisant l'autoconfiguration sans état), il suffit de valider à l'installation. On peut modifier l'activation de IPv6 en définissant à yes ou à no la variable NETWORKING_IPV6 dans le fichier /etc/sysconfig/network. Notons que dans les dernières versions de FedoraCore, la génération d'adresses autoconfigurées est active par défaut ; toutefois les scripts de configuration IPv6 ne seront pas appelés si la variable NETWORKING_IPV6 n'est pas validée, et la configuration risque donc d'être incomplète.

Pour vérifier que IPv6 fonctionne correctement, on dispose des commandes ping6 ou traceroute6 pour tester l'accessibilité d'une machine, et netstat ou ip pour visualiser les tables de routage, et de connexions actives.

Configuration manuelle

Pour configurer des adresses IPv6 de manière statique sur une interface de nom ethX, il suffit de mettre les informations nécessaires dans le fichier de configuration de l'interface /etc/sysconfig/network-scripts/ifcfg-ethX. Les variables à définir sont IPV6INIT, IPV6_AUTOCONF, IPV6ADDR. Toutes les variables utiles sont documentées dans le fichier /etc/sysconfig/network-scripts/init.ipv6. Par exemple voici comment définir une adresse statique sur une interface :

IPV6INIT=YES
IPV6_AUTOCONF=no
IPV6ADDR=2001:6ff:10:1::1000/64

Il est aussi possible d'ajouter une adresse IPv6 explicitement grace à la commande ifconfig.

ifconfig eth0 inet6 add 2001:6ff:10:1::1000/64

L'ajout de la route par défaut correspondante se fait comment en IPv4 à l'aide de la commande route.

route -A inet6 add default gw 2001:6ff:10:1::ffff

Une autre soluton consiste à utiliser la commande ip du pakcage iproute2. Iproute2 est une collection d'utilitaires permettant de contrôler divers aspects réseau sous Linux. Iproute2 et sa commande ip visent à remplacer les commandes ifconfig et route jugées obsolètes.

L'ajout d'une adresse IP en utilisant la commande ip se fait de la manière suivante :

ip -6 addr add 2001:6ff:10:1::1000/64 dev eth0

Cette commande est strictement équivalente à la commande ifconfig utilisée précédemment. Tout comme pour ifconfig, il est aussi possible d'utiliser la commande ip pour remplacer la commande route.

ip -6 route add default via 2001:6ff:10:1::ffff

Configuration d'un tunnel

Pour créer un tunnel configuré, il faut configurer une interface de nom sitX (X≥1). Le fichier suivant /etc/sysconfig/network-scripts/ifcfg-sit1 déclare un tunnel IPv6 dans IPv4, l'adresse de IPv4 de l'extrémité distante étant 192.1.2.5, sans adresses IPv6 :

DEVICE="sit1"
BOOTPROTO="none"
ONBOOT="yes"
IPV6INIT="yes"
IPV6TUNNELIPv4="192.1.2.5"

Comme le tunnel n'a pas d'adresse IPv6, il faut configurer le routage pour l'utiliser. Voici un exemple de fichier /etc/sysconfig/static-routes-ipv6 qui définit une route statique envoyant tout le trafic IPv6 unicast dans le tunnel :

sit1 2001::/3

Configuration de règles de sécurité

Linux RedHat et FedoraCore proposent le filtrage de paquets «iptables» en IPv4 comme en IPv6 (voir http://www.netfilter.org ). Le paquetage (rpm) à installer est iptables-ipv6, et la commande principale est ip6tables. La table de filtrage installée est rangée dans le fichier /etc/sysconfig/ip6tables. Par exemple, la table suivante bloque la commande «ping ::1» :

> cat /etc/sysconfig/ip6tables
# Generated by ip6tables-save v1.2.11 on Sun Jan 30 17:03:16 2005
*filter
:INPUT ACCEPT [13:1352]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [12:1248]
-A INPUT -s ::1/128 -d ::/0 -p ipv6-icmp -j DROP
COMMIT
# Completed on Sun Jan 30 17:03:16 2005

Ce fichier a été créé par les commandes :

> ip6tables -A INPUT -s ::1 -p ipv6-icmp -j DROP
> ip6tables-save > /etc/sysconfig/ip6tables

Pour plus de détails, se référer à la documentation de iptables (en remplaçant les adresses IPv4 par des adresses IPv6 !).

Une autre méthode pour contrôler les connexions est d'utiliser la librairie «tcpwrappers». De nombreuses commandes réseau (sendmail, sshd, les commandes lancées par xinetd, ...) utilisent cette librairie pour vérifier si un accès distant est autorisé par un fichier de configuration (voir man 5 hosts_access). Voici un exemple de fichier de configuration /etc/hosts.allow qui limite les connections entrantes ssh à deux réseaux :

sshd: [2001:660:5301:2::]/64 : allow
sshd: 192.0.2.32/255.255.255.224 : allow
sshd : ALL : deny

Macintosh Table des matières BSD
HOME