IPv6, successor to IPv4, is a newer version of the IP protocol designed to fix its flaws, most notably the scarcity of available IP addresses. This protocol handles the network layer; its purpose is to provide a way to address machines, to convey data to their intended destination, and to handle data fragmentation if needed (in other words, to split packets into chunks with a size that depends on the network links to be used on the path and to reassemble the chunks in their proper order on arrival).
Les noyaux Debian prennent systématiquement IPv6 en charge, le code correspondant étant intégré à l'image de base (à part pour certaines architectures, qui ne le proposent que dans un module ipv6
optionnel). Les outils de base comme ping
et traceroute
ont pour équivalents IPv6 ping6
et traceroute6
, respectivement disponibles dans les paquets Debian iputils-ping et iputils-tracepath.
On peut configurer le réseau IPv6 comme un réseau IPv4, à travers le fichier /etc/network/interfaces
. Pour ne pas se contenter d'un réseau IPv6 privé, il faut cependant disposer d'un routeur capable de relayer le trafic sur le réseau IPv6 global.
Exemple 10.10. Exemple de configuration IPv6
iface enp7s0 inet6 static
address 2001:db8:1234:5::1:1/64
# Disabling auto-configuration
# autoconf 0
# The router is auto-configured and has no fixed address
# (accept_ra 1). If it had:
# gateway 2001:db8:1234:5::1
Les sous-réseaux IPv6 ont généralement un masque de 64 bits, ce qui autorise 2
64 adresses dans le sous-réseau. Cela permet l'autoconfiguration d'adresses sans état (
Stateless Address Autoconfiguration ou
SLAAC), qui choisit une adresse IPv6 à partir de l'adresse MAC de l'interface. Par défaut, si
SLAAC est actif sur le réseau et IPv6 actif sur un ordinateur, le noyau va automatiquement trouver les routeurs IPv6 et configurer les interfaces.
Ce comportement a des implications en termes de fuites d'information. Lorsqu'on change fréquemment de réseau, par exemple avec un ordinateur portable, on ne souhaite pas forcément que l'adresse
MAC fasse partie de l'adresse IPv6 publique, puisque cela permet d'identifier aisément le même ordinateur sur des réseaux différents. Ce problème se résout grâce à une extension d'IPv6 (que Debian active par défaut si une connexion IPv6 fonctionnelle est détectée à l'installation initiale), qui remplace cette adresse
MAC par un composant aléatoire, qui renouvelle ce composant de manière régulière et qui utilise l'adresse résultante pour les connexions sortantes. Les connexions entrantes peuvent continuer d'utiliser les adresses générées par
SLAAC. L'exemple qui suit, à insérer dans
/etc/network/interfaces
, active cette extension de confidentialité pour l’interface
enp7s0.
Exemple 10.11. Extension d'IPv6 pour la protection des données personnelles
iface enp7s0 inet6 auto
# Prefer the randomly assigned addresses for outgoing connections.
privext 2
IPv6 connections can be restricted, in the same fashion as for IPv4.
nft
can be used to create firewall rules for IPv4 and IPv6 (see
Section 14.2.3, « Syntax of nft
»).
If a native IPv6 connection is not available, the fallback method is to use a tunnel over IPv4. Hurricane Electric is one (free) provider of such tunnels:
To use a Hurricane Electric tunnel, you need to register an account, login, select a free tunnel and edit the file /etc/network/interfaces
with the generated code.
You can install and configure the radvd
daemon (from the similarly-named package) if you want to use the configured computer as a router for a local network. This IPv6 configuration daemon has a role similar to dhcpd
in the IPv4 world.
The /etc/radvd.conf
configuration file must then be created (see /usr/share/doc/radvd/examples/simple-radvd.conf
as a starting point). In our case, the only required change is the prefix, which needs to be replaced with the one provided by Hurricane Electric; it can be found in the output of the ip a
command, in the block concerning the he-ipv6
interface.
Then run systemctl start radvd
. The IPv6 network should now work.