2016-12-06 16:22:48 +01:00
|
|
|
# IPv6
|
|
|
|
|
|
|
|
Globalement, cela fonctionne comme IPv4. Quelques différences :
|
|
|
|
|
|
|
|
* ndp (l'équivalent d'arp) utilise du multicast (vs du broadcast) pour
|
|
|
|
la résolution des adresses mac/IPv6
|
|
|
|
* Les IP à utiliser dans la documentation sont 2001:DB8::/32
|
|
|
|
* Il y a 2^128 IP. Pour calculer le nombre d'IP dans un bloc
|
2016-12-06 16:26:03 +01:00
|
|
|
2^(128-taille-du-préfixe)
|
2016-12-06 16:22:48 +01:00
|
|
|
* Il n'y a pas d'adresse de réseau ni de broadcast
|
|
|
|
|
|
|
|
Les tailles de bloc de bloc généralement :
|
|
|
|
|
|
|
|
* /32 : ce qui est alloué par le [RIR](https://fr.wikipedia.org/wiki/Registre_Internet_r%C3%A9gional)
|
|
|
|
* /48 : ce qui est parfois délégué aux 'end users'
|
|
|
|
* /56 : ce qui est parfois délégué aux 'end users'
|
|
|
|
* /64 : taille minimale du bloc pour avoir de l'autoconfiguration
|
|
|
|
|
|
|
|
XXX: parler des link local etc
|
|
|
|
|
|
|
|
## ROUTEUR : Autoconfiguration ou DHCPv6 sous OpenBSD
|
|
|
|
|
|
|
|
### Mettre en place rtadvd
|
|
|
|
|
|
|
|
Rtadvd permet d'annoncer que le routeur gère et donc route de
|
|
|
|
l'IPv6. Ainsi les clients peuvent _s'auto-configurer_ en utilisant une
|
|
|
|
adresse IPv6 composée avec le préfixe de l'adresse IPv6 du routeur
|
|
|
|
(qui est en fait l'adresse du réseau), et de l'adresse MAC de la
|
|
|
|
machine.
|
|
|
|
|
|
|
|
Exemple :
|
|
|
|
* Le préfixe est 2001:db8:33d8:4::/64 ;
|
|
|
|
* L'adresse MAC d'une machine est 00:1e:c9:47:3e:44 ;
|
|
|
|
* Son adresse IPv6 devient 2001:db8:33d8:4:21e:c9ff:fe47:3e44/64.
|
|
|
|
|
|
|
|
|
|
|
|
### Configuration de rtadvd
|
|
|
|
|
|
|
|
Il faut indiquer sur quelle interface faire l'annonce, suivi du
|
|
|
|
préfixe, et de la longueur de celui-ci. Enfin `raflags#64` indique que
|
|
|
|
les clients choisissent leurs adresses IPv6 (auto-configuration) et
|
|
|
|
peuvent récupérer d'autres informations, tel que le serveur DNS, via
|
|
|
|
DHCPv6. Pour le _MTU_, voir la partie [#IPv6etPPPoE IPv6 et PPPoE]
|
|
|
|
|
|
|
|
sis0:\
|
|
|
|
:addr="2001:db8:33d8:4::":prefixlen#64:raflags#64:\
|
|
|
|
:mtu#1492
|
|
|
|
|
|
|
|
|
|
|
|
### WIDE-DHCPv6
|
|
|
|
|
|
|
|
Description du protocole DHCPv6 à faire...
|
|
|
|
|
|
|
|
_WIDE-DHCPv6_ est un serveur DHCPv6 développé par [KAME](http://www.kame.net/).
|
|
|
|
Pour l'installer utiliser _pkg_add_.
|
|
|
|
|
|
|
|
Pour diffuser un serveur DNS en IPv6, modifier le fichier
|
|
|
|
/etc/dhcp6s.conf en indiquant l'adresse IPv6 du serveur DNS :
|
|
|
|
|
|
|
|
|
|
|
|
option domain-name-servers 2001:7a8:33d8:14:11:11ff:fecc:cf54;
|
|
|
|
|
|
|
|
|
|
|
|
## Client wide-dhcpv6-client
|
|
|
|
|
|
|
|
C'est un client qui permet d'interroger un serveur DHPCv6, pour
|
|
|
|
l'installer sous Debian :
|
|
|
|
|
|
|
|
|
|
|
|
# apt install wide-dhcpv6-client
|
|
|
|
|
|
|
|
|
|
|
|
Ensuite il faut configurer lors de l'installation ou dans le fichier
|
|
|
|
`/etc/default/wide-dhcpv6-client` l'interface sur laquelle écouter.
|
|
|
|
|
|
|
|
## IPv6 et PPPoE
|
|
|
|
|
|
|
|
Lorsqu'on utilise PPPoE il est nécessaire de diffuser un _MTU_ de 1492
|
|
|
|
dans la configuration de rtadvd, sinon les paquets ne traverseront par
|
|
|
|
le lien en PPPoE.
|
|
|
|
|
|
|
|
Voici un exemple de trame diffusé lorsque le routeur annonce qu'il gère l'IPv6.
|
|
|
|
|
|
|
|
|
|
|
|
No. Time Source Destination Protocol Info
|
|
|
|
2076 214.592925 fe80::200:24ff:fec9:6b68 ff02::1 ICMPv6 Router advertisement
|
|
|
|
|
|
|
|
Frame 2076 (118 bytes on wire, 118 bytes captured)
|
|
|
|
Ethernet II, Src: Olicom_c9:6b:68 (00:00:24:c9:6b:68), Dst: IPv6mcast_00:00:00:01 (33:33:00:00:00:01)
|
|
|
|
Internet Protocol Version 6
|
|
|
|
0110... = Version: 6
|
|
|
|
... 0000 0000............... = Traffic class: 0x00000000
|
|
|
|
......... 0000 0000 0000 0000 0000 = Flowlabel: 0x00000000
|
|
|
|
Payload length: 64
|
|
|
|
Next header: ICMPv6 (0x3a)
|
|
|
|
Hop limit: 255
|
|
|
|
Source: fe80::200:24ff:fec9:6b68 (fe80::200:24ff:fec9:6b68)
|
|
|
|
Destination: ff02::1 (ff02::1)
|
|
|
|
Internet Control Message Protocol v6
|
|
|
|
Type: 134 (Router advertisement)
|
|
|
|
Code: 0
|
|
|
|
Checksum: 0xa084 [correct]
|
|
|
|
Cur hop limit: 64
|
|
|
|
Flags: 0x40
|
|
|
|
0...... = Not managed
|
|
|
|
.1..... = Other
|
|
|
|
..0.... = Not Home Agent
|
|
|
|
...0 0... = Router preference: Medium
|
|
|
|
Router lifetime: 1800
|
|
|
|
Reachable time: 0
|
|
|
|
Retrans timer: 0
|
|
|
|
ICMPv6 Option (Source link-layer address)
|
|
|
|
Type: Source link-layer address (1)
|
|
|
|
Length: 8
|
|
|
|
Link-layer address: 00:00:24:c9:6b:68
|
|
|
|
ICMPv6 Option (MTU)
|
|
|
|
Type: MTU (5)
|
|
|
|
Length: 8
|
|
|
|
MTU: 1492
|
|
|
|
ICMPv6 Option (Prefix information)
|
|
|
|
Type: Prefix information (3)
|
|
|
|
Length: 32
|
|
|
|
Prefix length: 64
|
|
|
|
Flags: 0xc0
|
|
|
|
1...... = Onlink
|
|
|
|
.1..... = Auto
|
|
|
|
..0.... = Not router address
|
|
|
|
...0... = Not site prefix
|
|
|
|
Valid lifetime: 2592000
|
|
|
|
Preferred lifetime: 604800
|
|
|
|
Prefix: 2001:7a8:33d8:4::
|
|
|
|
|
|
|
|
|
|
|
|
## Configuration cliente sous OpenBSD
|
|
|
|
|
|
|
|
### Autoconfiguration
|
|
|
|
|
|
|
|
Cela va rajouter une adresse link local en ipv6 (en fe80::/10),
|
|
|
|
puis il va obtenir deux adresses IP, une liée à l'adresse mac (par
|
|
|
|
exemple avec la mac c8:5b:76:90:5b:35 on obtient
|
|
|
|
2001:db8:37:129:ca5b:76ff:fe90:5b35) et une autre adresse avec un flag
|
|
|
|
« autoconfprivacy » qui n'aura aucun lien avec l'adresse mac. C'est
|
|
|
|
cette dernière qui sera utilisée.
|
|
|
|
|
|
|
|
#### Configuration en dur
|
|
|
|
|
|
|
|
Dans le fichier /etc/hostname.interface correspondant à votre
|
|
|
|
interface, il suffit de rajouter le mot clé *rtsol* :
|
|
|
|
|
|
|
|
|
|
|
|
dhcp
|
|
|
|
rtsol
|
|
|
|
|
|
|
|
#### Configuration (temporaire) en ligne de commande
|
|
|
|
|
|
|
|
doas ifconfig em0 inet6 autoconf
|
|
|
|
|
|
|
|
### Configuration en IP fixe
|
|
|
|
|
|
|
|
#### Configuration en dur
|
|
|
|
|
|
|
|
Éditer le fichier /etc/hostname.interface correspondant à votre
|
|
|
|
interface et indiquez l'adresse IPv6 après le mot-clé *inet6* suivie
|
|
|
|
du préfixe, ici 64. Ce qui donne par exemple :
|
|
|
|
|
|
|
|
|
|
|
|
inet <IPv4> <masque-IPv4>
|
|
|
|
inet6 2001:db8:6666:333:123:45ff:fe1d:3456 64
|
|
|
|
|
|
|
|
|
|
|
|
Pour la passerelle il faut éditer le fichier /etc/mygate et ajouter
|
|
|
|
une ou plusieurs passerelles (IPv4 et IPv6) :
|
|
|
|
|
2016-12-29 02:18:28 +01:00
|
|
|
192.0.2.1
|
2016-12-06 16:22:48 +01:00
|
|
|
2001:db8:42::1
|
|
|
|
|
|
|
|
#### Configuration (temporaire) en ligne de commande
|
|
|
|
|
|
|
|
# ifconfig sis0 inet6 2001:db8:42::42/64
|
|
|
|
# route add -inet6 default 2001:db8:42::1
|
|
|
|
|
|
|
|
|
|
|
|
### Préférer l'IPv6 ou l'IPv4
|
|
|
|
|
|
|
|
Pour préférer l'IPv6, dans `/etc/resolv.conf` il faut mettre (à la
|
|
|
|
fin) :
|
|
|
|
|
|
|
|
family inet6 inet4
|
|
|
|
|
|
|
|
Sinon, l'IPv4 est préférée par défaut.
|
|
|
|
|
|
|
|
## Configuration cliente sous Debian
|
|
|
|
|
|
|
|
### Configuration en dur
|
|
|
|
|
|
|
|
Editer le fichier */etc/network/interfaces* :
|
|
|
|
|
|
|
|
|
|
|
|
auto lo
|
|
|
|
iface lo inet loopback
|
|
|
|
|
|
|
|
auto eth0
|
|
|
|
iface eth0 inet static
|
|
|
|
address <IPv4>
|
|
|
|
netmask <masque-IPv4>
|
|
|
|
gateway <gateway-IPv4>
|
|
|
|
|
|
|
|
iface eth0 inet6 static
|
|
|
|
address 2001:db8:42::42
|
|
|
|
netmask 64
|
|
|
|
up ip route add 2000::0/3 via 2001:db8:42::1
|
|
|
|
|
|
|
|
|
|
|
|
### Configuration (temporaire) en ligne de commande
|
|
|
|
|
|
|
|
|
|
|
|
# ifconfig eth0 add 2001:db8:42::42/64
|
|
|
|
# ip route add 2000::0/3 via 2001:db8:42::1
|
|
|
|
|
|
|
|
|
|
|
|
_Note : La commande route est fourni via le paquet `iproute`_
|
|
|
|
|
|
|
|
### Préféfer l'IPv4 à l'IPv6 lors de la résolution DNS
|
|
|
|
|
|
|
|
Mettre ceci dans /etc/gai.conf
|
|
|
|
|
|
|
|
|
|
|
|
precedence ::ffff:0:0/96 100
|
|
|
|
|
2016-12-06 16:31:33 +01:00
|
|
|
## Afficher/manipuler la table d'entrée IPv6 - adresse mac
|
|
|
|
|
|
|
|
### OpenBSD
|
|
|
|
|
|
|
|
Il y a ndp(8). Pour afficher la table :
|
|
|
|
|
|
|
|
ndp -s
|
|
|
|
|
|
|
|
### Debian
|
|
|
|
|
|
|
|
Il y a la commande ip. Pour afficher la table :
|
|
|
|
|
|
|
|
ip -6 n
|
2016-12-06 16:43:58 +01:00
|
|
|
|
|
|
|
## Avertissements
|
|
|
|
|
|
|
|
### Debian, kvm et les bridges
|
|
|
|
|
|
|
|
Il se peut que le bridge sur l'hyperviseur ne laisse pas passer le
|
|
|
|
multicast utilisé par le NDP. Il faut activer le *snooping multicast*.
|
|
|
|
|
|
|
|
En CLI :
|
|
|
|
|
|
|
|
echo 0 > /sys/class/net/br0/bridge/multicast_snooping
|
|
|
|
|
|
|
|
Dans /etc/network/interfaces :
|
|
|
|
|
|
|
|
auto br0
|
|
|
|
iface br0 inet manual
|
|
|
|
bridge_ports eth0
|
|
|
|
up echo 0 > /sys/class/net/br0/bridge/multicast_snooping
|