LightcodeSysadmin Open Source

Mise en place de l'IPv6

Cet article vous expliquera comment utiliser l’IPv6 sur votre ordinateur ou dans votre LAN. Nous verrons comment installer un tunnel IPv6 chez différents fournisseur, ensuite, nous verrons comment installer l’auto-configuration, enfin, nous verrons comment sécuriser l’installation.

Pour comprendre plainement cet article, il faut bien comprendre les notions de netmasks et la notation CIDR. Si vous ne les avez pas, je vous conseille d’aller lire mon article sur l’adresse IP.

Comment avoir une adresse IPv6 ?

En natif

La solution la plus simple pour profiter de l’IPv6 est d’avoir un fournisseur d’accès Internet compatible. Voici la liste des opérateurs français et l’état de déploiement IPv6 :

Opérateur Etat Subnet Commentaire
Bouygues Telecom Prévu pour 2017
French Data Network Déployé /48 Activé par défaut
Free Déployé /64 Activable sur la Freebox
Nerim Déployé ?
OVH Déployé /56 Activé par défaut
Orange en ADSL Prévu en 2017
Orange en fibre/VDSL Déployé /56 Activable dans l’espace client
SFR Déployé /64 Activable dans l’espace client

Tableau actualisé en janvier 2017.

La colonne “subnet” permet de savoir quelle est la taille de l’espace d’adressage qui vous est alloué. Le nombre indiqué correspond le nombre de bits dont vous disposez pour adresser vos machines et vos réseaux. La norme prévoit que votre FAI vous fournisse un /48 soit 48 bits ou encore 2 à la puissance 48 adresses.

En utilisant un tunnel

Si vous disposez déjà d’une adresse IPv6 fournie par votre FAI, vous pouvez sauter cette section.

Un tunnel 6to4 est un tunnel entre votre machine et un serveur. Ce tunnel permettra de transporter des paquets IPv6. Ces paquets seront enfermés (encapsulés) dans des paquets IPv4. Le serveur 6to4 va récupérer le paquet IPv6 et l’envoyer sur le réseau IPv6 (avec votre bloc).

Cette partie détaille l’ajout d’une adresse IPv6 sur une distribution Linux. Je n’ai jamais réussi à installer un tunnel IPv6 sous Windows. Toutefois, il sera possible de l’utiliser quand nous verrons l’auto-configuration.

Hurricane Electric

Hurricane Electric est une entreprise américaine qui loue de la bande passante (transit) ainsi que des serveurs. Cette entreprise propose aussi, gratuitement, des tunnels 6to4. La limite est à 5 tunnels.

Pour créer un tunnel, il faut s’inscrire sur le site tunnelbroker.net. Ensuite, il faut cliquer sur “Create Regular Tunnel” dans le menu à gauche. Dans le premier champ du formulaire, il faut mettre l’adresse IPv4 publique qui recevra le bloc d’IPv6. En dessous de ce champ, l’indication “You are viewing from” vous donne l’adresse IPv4 que vous utilisez pour visiter la page. Le champ suivant concerne le fameux serveur 6to4, celui qui recevra nos paquets IPv6. Il vous propose de le choisir en fonction de votre localisation : il faut prendre le serveur le plus près de sa machine (celui qui aura le meilleur ping). Une fois que ces informations sont renseignées, vous pouvez cliquer sur “Create tunnel”.

J’ai annoté en rouge sur la capture d’écran les différentes informations données sur la page. Maintenant nous allons configurer l’IPv6 sur votre machine. Nous allons utiliser une configuration de base donnée dans “Example Configurations”. Je tiens à préciser que le code donné ne fonctionne apparemment pas sur Windows.

Dans la suite du tutoriel, je vous montrerai comment configurer le routeur d’avertissement sous Linux, voici le code que j’utilise pour activer l’IPv6 sous Linux (intitulé “Linux-net-tools”) :

# ifconfig sit0 up
# ifconfig sit0 inet6 tunnel ::216.66.84.42
# ifconfig sit1 up
# ifconfig sit1 inet6 add 2001:470:****:***::2/128
# ifconfig sit1 mtu 1280
# route -A inet6 add ::/0 dev sit1

Ce morceau de cote utilise le protocole SIT. Il créé deux interfaces réseaux sit0 et sit1. Celle qui aura l’adresse IPv6 sera sit1. Il est important de savoir ça pour continuer.

J’ai modifié deux choses par rapport à la configuration de base d’Hurricane Electric :

  • Ligne 4 : pour faciliter la suite du tutoriel, j’ai modifié le “/64” de la configuration fournit par HE (Hurricane Electric) par un “/128”. J’utilise cette technique pour éviter de router tout le bloc vers sit1 (c’est le système d’exploitation qui l’ajoute automatiquement).
  • Ligne 5 : j’ai ajouté cette ligne pour corriger un problème de MTU.
6to4 anycast

Note : cette technique ne doit plus être utilisée.

6to4 anycast est un système public de faire la même chose que tout à l’heure. Pour trouver son bloc d’IPv6 : 2002:WX:YZ::1/16. W, X, Y et Z correspond à chaque nombre de votre adresse IPv4 convertit en hexadécimal.

Exemple : pour 192.168.25.47, l’adresse IPv4 sous forme hexadécimal est C0.A8.19.2F, le bloc sera 2002:c0a8:192f::1/16.

# ifconfig sit0 up
# ifconfig sit0 add <adresse6to4locale>/16
# route -A inet6 add 2000::/3 gw ::192.88.99.1 dev sit0

Il faut remplacer "<adresse6to4locale>" par votre adresse IPv6 anycast. Une interface sit0 permet donc de joindre le réseau IPv6, la dernière ligne permet de router les paquets IPv6 (ceux en direction d’Internet) vers l’adresse 192.88.99.1. Cette adresse est celle du service 6to4 anycast, le signe “::” permet de rendre cette adresse compatible IPv6.

Tunnel sur les NAS Synology

Je vais parler des NAS Synology, vu que j’en ai un. Il est aussi possible de faire un tunnel sur son NAS Synology. Cela est utile seulement si vous n’installer pas l’IPv6 sur tout votre LAN.

Ils sont compatibles IPv6 mais les deux techniques précédemment données ne fonctionnent pas. Il faut donc se rendre dans l’interface via un navigateur puis : Panneau de configuration > Réseau > Tunnel. Il faut cocher “Activer le tunnel” puis entrer l’adresse “anonymous.freenet6.net”. Si vous trouvez d’autres services compatibles, merci de me le signaler.

Outils et tests

  • Pour faire un ping, il faut utiliser la commande ping6 sous Linux. Sous Windows, ce n’est pas la peine de changer ces habitudes.
  • Pour faire un traceroute sous Linux on utilise traceroute6. Sous Windows la commande tracert fonctionne comme en IPv4.

Création d’un routeur

Cette partie est destinée à ceux qui veulent fabriquer leur propre routeur IPv6 avec des logiciels Linux.

Trouver son /64

Si vous avez un bloc plus grand qu’un /64, par example un /48, vous pourrez faire plusieurs sous-réseaux. Par exemple, si votre bloc est un bloc de 6to4 anycast : 2002:abcd:dcba::/48. On va l’écrire en notation longue : 2002:abcd:dcba:0000:0000:0000:0000:0000/48.

  • Rouge : cette partie est imposée par votre adresse IP, dans un /48 les 3 premiers groupes sont fixes ;
  • Orange : cette partie vous permet de faire plusieurs sous-réseaux. Nous pouvons laisser ces chiffres à 0.
  • Vert : les adresses des hôtes, des clients du réseau.

Les parties rouge et orange forment un /64 qu’on associera à un LAN. Pour cette partie, dans les commandes "<votreBloc>" est à remplacer par les quatre premiers groupes de votre bloc (pour l’exemple : 2002:abcd:dcba:0).

Configuration du routeur

D’abord, sur le routeur, il faut activer le routage (IPv4 et IPv6), nous allons donc éditer le fichier /etc/sysctl.conf.

Il faut décommenter les deux lignes :

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

Puis taper la commande :

# sysctl -p

Voilà les noms des interfaces utilisés :

  • eth0 : interface qui a accès à Internet ;
  • eth1 : interface qui est raccordée au réseau local (LAN) ;
  • sit0 : interface virtuelle qui a l’adresse IPv6 ;

Il faut maintenant ajouter une IPv6 publique sur l’interface eth1 :

# ifconfig eth1 up
# ifconfig eth1 inet6 add <votreBloc>::42/64

L’auto-configuration

Configuration de base

En IPv6, le moyen le plus simple pour profiter de l’auto-configuration est d’installer un routeur d’avertissement. Un routeur d’avertissement envoie un bloc d’IP /64 sur le réseau à l’aide du protocole ICMP.

Toujours sous Linux, nous allons installer le paquet radvd :

# apt-get install radvd

Ensuite, il faut configurer radvd en éditant le fichier /etc/radvd.conf :

interface eth1
{
  AdvSendAdvert on;
  prefix <votreBloc>::/64
  {
    AdvOnLink on;
    AdvAutonomous on;
  };
};
  • Ligne 1 : on précise sur quel interface les requêtes partiront, nous allons prendre l’adresse du LAN ;
  • Ligne 3 : on autorise l’envoie des requêtes ICMP “Advertissement” ;
  • Ligne 5 : on configure le bloc d’IP. N’oubliez pas qu’il faut mettre un /64 ;

On démarre le service :

/etc/init.d/radvd start

Bien entendu, vous devrez aussi configurer le routeur pour avoir l’IPv4 en faisant un NAT par exemple.

Pour les tunnels

Pour ceux qui utilisent un tunnel, il faut ajouter une ligne dans la configuration pour prévenir les hôtes de changer le MTU (3e ligne) :

interface eth1
{
  AdvLinkMTU 1280;
  AdvSendAdvert on;
  prefix <votreBloc>::/64
  {
    AdvOnLink on;
    AdvAutonomous on;
  };
};

Sécurisation

Nous verrons ici le plus simple, à savoir le pare-feu. Il permet de filtrer les flux entrant et sortant du réseau ou de la machine à l’aide de règles.

Attention toutefois, le pare-feu ne protège pas de toutes les menaces existantes, ainsi il sera toujours nécessaire d’avoir un antivirus et d’être vigilant sur ce que l’on télécharge ou installe.

Sous Linux

Nous verrons d’abord des règles à appliquer sur chaque machine du LAN. Puis nous verrons les règles qui s’appliquent au routeur, car il n’est pas intéressant d’autoriser tout ce qui vient d’Internet et faire un premier filtrage ne fait pas de mal.

Dans les règles ci-dessous, eth0 correspond à l’interface réseau d’un client de votre LAN. sit1 est l’interface qui a une IPv6 publique et eth1 est l’interface qui permet d’accéder au LAN.

Des règles pour tous

Ces règles peuvent être configurées sur les routeurs et sur les machines. Pour les routeurs, il faudra ajouter les règles de la partie “2. Pour les routeurs”, cela permettra de filtrer le contenu entrant dans le LAN.

ip6tables -F
ip6tables -X

# On bloque tous le contenu
ip6tables -P INPUT DROP
ip6tables -P OUTPUT DROP
ip6tables -P FORWARD DROP

# Autorise les accès a la boucle locale
ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A OUTPUT -o lo -j ACCEPT

# Autorise toutes les connexions sortantes dans la machine
ip6tables -A OUTPUT -o sit1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Autorise les connexions entrantes déjà établies vers la machine
ip6tables -A INPUT -i sit1 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Autorise les messages ICMP (et donc les ping)
ip6tables -A INPUT -i sit1 -p ipv6-icmp -j ACCEPT
ip6tables -A OUTPUT -o sit1 -p ipv6-icmp -j ACCEPT
Pour les routeurs

Il faut ajouter cette partie au morceau de code précédent :

# On autorise le contenu sortant du LAN eth1 -> sit1
ip6tables -A FORWARD -i eth1 -o sit1 -j ACCEPT
# On autorise les requêtes entrantes seulement si elles ont déjà été établies sit1 -> eth1
ip6tables -A FORWARD -i sit1 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

Autoriser quelques connexions entrantes

Ouvrir un port TCP ou UDP

Par défaut, ce script bloque tout le contenu entrant dans le réseau. Ainsi, si vous voulez autoriser les visiteurs IPv6 de votre site, il va falloir ajouter une règle sur la machine hébergeant le contenu :

# ip6tables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT

Si vous avez choisit de bloquer le contenu entrant également sur le routeur, il faudra ajouter cette règle :

# ip6tables -A FORWARD -i sit1 -p tcp --dport 80 -d 2001:abcd:dcba::42 -j ACCEPT

Ici 2001:abcd:dcba::42 est l’adresse IPv6 du client où est installé le serveur web.

Pour débloquer un port UDP il suffit de faire la même chose en remplaçant “tcp” par “udp”.

Autoriser l’ICMP (ping entre autre)

Pour vos clients, les ping sont déjà autorisés dans le script ci-dessus. Sur votre routeur pour accepter toutes les requêtes ICMP entrantes :

# ip6tables -A FORWARD -i sit1 -p ipv6-icmp -j ACCEPT

Comme tout à l’heure, avec l’option “-d” il est possible de spécifier une IP.

Sous Windows

Pour Windows, le pare-feu fonctionne de la même manière en IPv6 qu’en IPv4. Ainsi, si vous autoriser les connexions TCP sur le port 80, ce sera valable pour l’IPv6 et l’IPv4. Ce pare-feu est disponible sur Windows à partir d’XP SP2.

Foire Aux Questions

Qu’est-ce que l’auto-configuration d’IPv6 ?

Pour profiter de l’auto-configuration, il faut que le FAI fournisse au moins un “/64”. Il vous faudra aussi un routeur d’avertissement que nous verrons dans la suite du tutoriel. L’auto-configuration permettra au système d’exploitation de choisir une adresse IPv6 pour accéder à Internet. L’algorithme permettant de choisir l’adresse IP peut se baser sur l’adresse MAC pour choisir cette dernière, notamment avec un système d’exploitation Linux.

Quels sont les risques de passer à l’IPv6 ?

Selon LeMagIT, IPv6 poserait différents problèmes notamment dans son implémentation au sein du système d’exploitation. De plus, certains antivirus ne filtrent pas le contenu provenant d’IPv6 et les systèmes de sécurité se basant sur des listes d’adresses IP deviennent caduques.

Sur quels OS fonctionne l’IPv6 ?

L’IPv6 est pris en charge nativement sur Linux, macOS et Windows à partir de Vista. Si vous utilisez toujours Windows XP, il faudra l’installer.

Mon adresse MAC est-elle écrite dans mon IPv6 publique ?

Oui si vous utilisez l’auto-configuration et un client Linux. Toutefois, il est possible de fixer une adresse IPv6 manuellement et donc éviter ce genre de problème. Si votre client est Windows, l’adresse est générée aléatoirement donc vous n’avez pas ce problème.