Outils pour utilisateurs

Outils du site


doc:ipv6

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
doc:ipv6 [2005/07/18 11:09]
lehobey
doc:ipv6 [2015/10/01 00:07] (Version actuelle)
fdl [Paradoxe] Suppression.
Ligne 1: Ligne 1:
-Cette page est une version augmentée, améliorée et commentée du document initialement paru [[http://​www.gulliver.eu.org/​ml-archives/​avril-2005/​threads.html|ici]].+(c) 2005 Frédéric Daniel Luc LEHOBEY. Ce document est publié sous la licence [[GNU GPL]]. Merci d'en respecter les [[droits GPL|termes]]. 
 + 
 +Cette page est une version augmentée, améliorée et commentée du document initialement paru [[http://​www.gulliver.eu.org/​ml-archives/​avril-2005/​msg00520.html|ici]].
  
 ====== Contexte ====== ====== Contexte ======
Ligne 19: Ligne 21:
  
 ===== Noyau ===== ===== Noyau =====
-J'ai utilisé le noyau Linux 2.6.8 standard de Debian sarge. Cela fonctionne aussi avec le noyau standard Linux 2.4.27 mais il faut charger explicitement le module //ipv6// dans le noyau. À faire en ajoutant //ipv6// à ///​etc/​modules//​ (à la main ou par modconf) ou bien en ajoutant où il le faut un //modprobe ipv6// comme dans le ///​etc/​network/​interfaces//​ proposé plus bas.+J'ai utilisé le noyau Linux 2.6.8 standard de Debian sarge. Cela fonctionne aussi avec le noyau standard Linux 2.4.27 mais il faut charger explicitement le module //ipv6// dans le noyau. À faire en ajoutant //ipv6// à ///​etc/​modules//​ (à la main ou par //modconf//) ou bien en ajoutant où il le faut un //modprobe ipv6// comme dans le ///​etc/​network/​interfaces//​ proposé plus bas.
  
 ===== Paquets utiles pour le diagnostic ===== ===== Paquets utiles pour le diagnostic =====
Ligne 37: Ligne 39:
   $ w3m http://​[2001:​4f8:​4:​7:​2e0:​81ff:​fe52:​9a6b]/​   $ w3m http://​[2001:​4f8:​4:​7:​2e0:​81ff:​fe52:​9a6b]/​
 pour surfer sur IPv6 (c'est l'​adresse de www.netbsd.org à la date d'​écriture de ce document.) pour surfer sur IPv6 (c'est l'​adresse de www.netbsd.org à la date d'​écriture de ce document.)
 +
 +Un site qui vous indique si vous êtes bien sur IPv6 avec une tortue qui bouge (et affiche votre adresse IPv6) est [[http://​www.kame.net/​]].
  
 ===== Conversion décimal-hexadécimal ===== ===== Conversion décimal-hexadécimal =====
Ligne 46: Ligne 50:
   # printf "​2002:​%x%02x:​%x%02x::​\n"​ `echo $(ipofif $(default-if)) | tr "​."​ " "`   # printf "​2002:​%x%02x:​%x%02x::​\n"​ `echo $(ipofif $(default-if)) | tr "​."​ " "`
  
-====== /​etc/​network/​interfaces ======+====== /​etc/​network/​interfaces ​du routeur ​====== 
 ===== Configuration du tunnel vers IPv6 ===== ===== Configuration du tunnel vers IPv6 =====
-  auto sit1 +Entrelardée de commentaires.
-  iface sit1 inet6 v4tunnel +
-          address 2002:​c000:​201:​feed::​1 +
-          netmask 64 +
-          endpoint any +
-          local 192.0.2.1 +
-          pre-up modprobe ipv6 +
-          up ip -6 route add 2000::/3 via ::​192.88.99.1 dev sit1 +
-          up sysctl -w net.ipv6.conf.all.forwarding=1 +
-          up sysctl -w net.ipv6.conf.all.autoconf=0 +
-          up sysctl -w net.ipv6.conf.all.accept_ra=0 +
-          up sysctl -w net.ipv6.conf.all.accept_redirects=0 +
-          up sysctl -w net.ipv6.conf.all.router_solicitations=0 +
-          down ip -6 route flush dev sit1+
  
-===== Configuration de l'interface qui va fournir l'IPv6 au réseau local (modifier si ce n'est pas eth0 chez vous) ===== +<​file>​ 
- +auto sit1 
-  auto eth0 +iface sit1 inet6 v4tunnel 
-  iface eth0 inet6 static +</​file>​ 
-          ​address 2002:c000:201::1 +Le nom //sit1// est souvent repris pour les tunnels (et //sit0// est utilisé par Debian) mais cela pourrait être n'importe quel autre nom. 
-          ​netmask 64 +<​file>​ 
-          pre-up ​modprobe ipv6+        address 2002:​52e7:​94bd:​feed::​1 
 +</​file>​ 
 +L'utilisation du sous-réseau ​//feed// permet de laisser libre //0// pour eth0. Cela pourrait être n'​importe quelle autre valeur de 4 chiffres hexadécimaux. 
 +<​file>​ 
 +        netmask 64 
 +        endpoint any 
 +        ​local 82.231.148.189 
 +</​file>​ 
 +L'​adresse locale ​(tout comme celle IPv6) est malheureusement codée en dur dans le fichier ​ce qui rend plus compliquée la mise en place du même système avec une adresse IPv4 reçue dynamiquement. Pour ces configurations-là,​ il vaut mieux probablement utiliser [[http://​www.freenet6.net|freenet6]]. 
 +<​file>​ 
 +        pre-up modprobe ipv6 
 +</​file>​ 
 +Pour être sûr que le module ​est bien dans le noyau au moment où nous en avons besoin (indispensable pour les noyaux 2.4)
 +<​file>​ 
 +        pre-up sysctl -w net.ipv6.conf.all.forwarding=
 +        pre-up sysctl -w net.ipv6.conf.all.autoconf=
 +        pre-up sysctl -w net.ipv6.conf.all.accept_ra=
 +        pre-up sysctl -w net.ipv6.conf.all.accept_redirects=
 +        pre-up sysctl -w net.ipv6.conf.all.router_solicitations=0 
 +</​file>​ 
 +Ces commandes configurent le noyau en mode routeur. Elles peuvent être remplacées par une configuration du fichier ///​etc/​sysctl.conf//​ (voir « man sysctl ») mais je trouve plus clair et logique de le faire ici. 
 +<​file>​ 
 +        # Coupe-feu 
 +        pre-up ip6tables -F 
 +        pre-up ip6tables -I INPUT -i $IFACE -p tcp --syn -j DROP 
 +        pre-up ip6tables -I FORWARD -i $IFACE -p tcp --syn -j DROP 
 +        pre-up ip6tables -I INPUT -i $IFACE -p udp \! --dport 32768:60999 -j DROP 
 +        pre-up ip6tables -I FORWARD -i $IFACE -p udp \! --dport 32768:60999 -j DROP 
 +</​file>​ 
 +Configuration (optionnelle) d'un coupe-feu élementaire. Les chaînes standard d'//​iptables//​ sont ''​INPUT''​ (entrée sur la machine), ''​FORWARD''​ (transmission par la machine) et ''​OUTPUT''​ (sorties de la machine). 
 +<​file>​ 
 +        # ssh 
 +        pre-up ip6tables -I FORWARD -i $IFACE -p tcp --dport 22 -j ACCEPT 
 +</​file>​ 
 +Cette règle permet de se connecter par //ssh// sur les autres machines du réseau local mais pas sur le routeur. 
 +<​file>​ 
 +        pre-up ip6tables -I INPUT -i $IFACE -p tcp --dport 22 -j ACCEPT 
 +</​file>​ 
 +Cette règle, optionnelle,​ permet de se connecter aussi sur le routeur par //ssh//. 
 +<​file>​ 
 +        # GnomeMeeting 
 +        pre-up ip6tables -I FORWARD -i $IFACE -p tcp --dport 1720 -j ACCEPT 
 +        pre-up ip6tables -I FORWARD -i $IFACE -p tcp --dport 30000:30010 -j ACCEPT 
 +        pre-up ip6tables -I FORWARD -i $IFACE -p udp --dport 5000:5016 -j ACCEPT 
 +</​file>​ 
 +Pour permettre à //​gnomemeeting//​ de fonctionner sur les machines du réseau local. Si c'est le routeur lui-même qui porte la caméra, il faut remplacer les ''​FORWARD''​ par des ''​INPUT''​. 
 +<​file>​ 
 +        # http 
 +        ​pre-up ​ip6tables -I FORWARD -i $IFACE -p tcp --dport 80 -j ACCEPT 
 +</​file>​ 
 +Pour accéder au serveurs http du réseau local. 
 +<​file>​ 
 +        pre-up ip6tables -I INPUT -i $IFACE -p tcp --dport 80 -j ACCEPT 
 +</​file>​ 
 +Règle optionnelle si le routeur héberge lui-même un serveur http. 
 +D'​autres règles analogues peuvent être ajoutées selon les services dont vous avez besoin. 
 +<​file>​ 
 +        up ip -6 route add default via ::​192.88.99.1 dev $IFACE 
 +        down ip -6 route flush dev $IFACE 
 +</​file>​
  
 +===== Configuration de l'​interface qui va fournir l'IPv6 au réseau local =====
 +À modifier si ce n'est pas eth0 chez vous.
 +<​file>​
 +auto eth0
 +iface eth0 inet6 static
 +        address 2002:​52e7:​94bd::​1
 +        netmask 64
 +        pre-up modprobe ipv6
 +</​file>​
 ===== Configuration (optionnelle) de cette même interface en IPv4 ===== ===== Configuration (optionnelle) de cette même interface en IPv4 =====
  
-  ​iface eth0 inet static +<​file>​ 
-          address 192.168.0.1 +iface eth0 inet static 
-          netmask 255.255.255.0+        address 192.168.0.1 
 +        netmask 255.255.255.0 
 +</​file>​ 
 +===== Configuration du DNS sur le routeur ===== 
 +Suppose l'​installation préalable de dnsmasq et resolvconf (voir plus bas). 
 +<​file>​ 
 +auto lo 
 +iface lo inet loopback 
 +        dns-nameservers 127.0.0.1 
 +</​file>​ 
 + 
 +====== /​etc/​radvd.conf du routeur ====== 
 +Toujours sous l'​hypothèse que eth0 est l'​interface qui fournit au réseau local l'​IPv6. Attention, //radvd// est très pointilleux sur la syntaxe du fichier ///​etc/​radvd.conf//​. 
 + 
 +<​file>​ 
 +interface eth0 
 +
 +   ​AdvSendAdvert on; 
 +   ​prefix 2002:​52e7:​94bd::/​64 
 +   { 
 +   }; 
 +}; 
 +</​file>​ 
 + 
 +====== /​etc/​dnsmasq du routeur ====== 
 +Configuration (optionnelle) d'un serveur dhcp. 
 +<​file>​ 
 +dhcp-range=192.168.0.50,​192.168.0.150,​12h 
 +</​file>​ 
 +Par exemple. Le réseau choisi doit être cohérent avec celui de eth0 dans ///​etc/​network/​interfaces//​. 
 + 
 +Pour ajouter d'​autres serveurs de noms : 
 +<​file>​ 
 +server=/​domaine.tld/​adresse.ip.du.serveur 
 +</​file>​ 
 +En sachant que la syntaxe 
 +<​file>​ 
 +server=//​adresse.ip.du.serveur 
 +</​file>​ 
 +récupère les noms sans qualification de domaine. 
 + 
 +Il peut être utile dans ce dernier cas de commenter le paramètre : 
 +<​file>​ 
 +#​domain-needed 
 +</​file>​ 
 +(attention, bien savoir ce qu'on fait.) 
 + 
 +Installation de //​resolvconf//​ fortement recommandée pour que le routeur soit son propre DNS (voir la commande dns-nameservers dans le ///​etc/​network/​interfaces//​ plus haut). 
 + 
 +====== /etc/hosts du routeur ====== 
 +Si dnsmasq est activé, les associations (//​leases//​) dhcp seront automatiquement utilisées par dnsmasq. Cependant, il faut avoir un client dhcp qui déclare le nom de la machine. C'est le cas de //pump//. Il est aussi possible d'​utiliser //​dhcp3-client//​ en paramétrant le fichier ///​etc/​dhcp3/​dhclient.conf//​ avec un 
 +  send host-name "​nomdelamachine";​ 
 +Pour ce qui est du /etc/hosts du routeur, il sera utilisé par dnsmasq pour fournir les adresses IPv6 qui y sont. Voici le mien : 
 + 
 +  127.0.0.1 ​      ​localhost.localdomain ​  ​localhost 
 +  192.168.0.1 ​    ​palestine 
 +  # The following lines are desirable for IPv6 capable hosts 
 +  ::1     ​ip6-localhost ip6-loopback 
 +  fe00::0 ip6-localnet 
 +  ff00::0 ip6-mcastprefix 
 +  ff02::1 ip6-allnodes 
 +  ff02::2 ip6-allrouters 
 +  ff02::3 ip6-allhosts 
 +  ::1                                     ​localhost 
 +  # machines réseau fdl 
 +  2002:​52e7:​94bd:​fd12:​230:​65ff:​fe05:​3215 ​ clochette 
 +  2002:​52e7:​94bd:​0:​a00:​20ff:​fec6:​59b9 ​    ​dormette 
 +  2002:​52e7:​94bd:​0:​2e0:​4cff:​fed2:​d8c1 ​    ​melior 
 +  2002:​52e7:​94bd:​fd11:​2e0:​4cff:​fedb:​e059 ​ melusine 
 +  2002:​52e7:​94bd:​fd11:​210:​5aff:​fe45:​c504 ​ morgane 
 +  2002:​52e7:​94bd:​0:​a00:​20ff:​fed1:​5e13 ​    ​ondine 
 +  2002:​52e7:​94bd::​1 ​                      ​palestine 
 +  2002:​52e7:​94bd:​0:​a00:​20ff:​fe89:​571a ​    ​poussiere 
 +  2002:​52e7:​94bd:​face::​fd11 ​              ​presine 
 +  2002:​52e7:​94bd:​0:​a00:​20ff:​fe89:​5332 ​    ​solaria 
 +  2002:​52e7:​94bd:​0:​a00:​20ff:​fe86:​2d74 ​    ​titania 
 +  # machines réseau arno 
 +  2002:​5243:​6d2e::​1 ​                      ​pustule 
 + 
 +Il n'y a donc bien qu'​__un seul fichier__ à maintenir pour que toutes les autres machines clientes se connaissent mutuellement. 
 + 
 +L'​adresse IPv6 attribuée automatiquement à chaque machine en fonction de son adresse MAC et du préfix choisi pour //radvd// peut se lire par un appel à //​ifconfig//​ sur les machines clientes. 
 + 
 +====== /​etc/​network/​interfaces des clients ====== 
 + 
 +En général il n'y a rien à faire. Il suffit de configurer leurs interfaces en dhcp (IPv4) et aussitôt, l'​autoconfiguration IPv6 fera son effet. Si on ne veut configuer ni dhcp ni IPv4, il y a moyen de le faire à la main comme plus haut pour les adresses IPv6 fixes. IPv6 marchera aussi avec la seule configuration d'une adresse IPv4 fixe. 
 + 
 +<​file>​ 
 +auto eth0 
 +iface eth0 inet dhcp 
 +</​file>​ 
 + 
 +====== Conseils de fin ====== 
 +« man » est votre ami. 
 + 
 +===== Redémarrer les différents services ===== 
 +  # invoke-rc.d networking restart 
 +  # invoke-rc.d ipmasq restart 
 +  # invoke-rc.d radvd restart 
 +  # invoke-rc.d dnsmasq restart 
 + 
 + 
 +===== Remerciements ===== 
 +  * John Goerzen (http://​changelog.complete.org/​node/​61) ; 
 +  * Jeroen Massar (http://​lists.debian.org/​debian-ipv6/​2004/​01/​msg00013.html) ; 
 +  * Craig Small (http://​people.debian.org/​~csmall/​ipv6/​setup624.html et http://​people.debian.org/​~csmall/​ipv6/​setup.html) 
 +  * Daniel De Graaf (http://​www.public.iastate.edu/​~danield//​info/​ipv6) 
 +  * Jean-Marc Liotier (http://​www.ruwenzori.net/​ipv6/​Jims_LAN_IPv6_global_connectivity_howto.html) 
 +  * plus généralement,​ à tous ceux qui publient leur documentation sur Internet ; 
 +  * à [[http://​arno.skamp.eu.org/​|Arnaud Fouquaut]] pour le test de cette configuration ; 
 +  * à tous ceux qui apporteront leur contribution à cette documentation. 
 + 
 +====== Simplifications possibles ? ====== 
 +Selon des sources postérieures à la rédaction originale : 
 +  * Possible d'​utiliser directement ''​sit0''​ selon http://​www.melb.apana.org.au/​wiki/​IPv6ConfigurationForDebian ? 
 +  * //6to4// avec adresse IPv4 dynamique : http://​www.wlug.org.nz/​6to4 
 + 
 + 
 +===== Autres documentations ===== 
 +Postérieures à la rédaction originale : 
 +  * http://​sindominio.net/​suburbia/​print.php3?​id_article=148 
 +  * http://​wiki.debian.org/​DebianIPv6
doc/ipv6.1121677760.txt.gz · Dernière modification: 2005/07/18 11:19 (modification externe)