Informations :
Dates
- Publish : : Friday 27 march 2020
- Modification : Monday 13 april 2020
Share :
NdM : 2020/03/27 - Cette page est en cours de complément rédactionnel...
Cette documentation n'est pas fonctionnelle.
J'écris les informations sur des tests de configuration que j'essaie moi-même et cela pour comprendre/apprendre RADvD / DHCPv6 et les autres services dont j'aurais besoin pour configurer un réseau IPv6 de manière automatique.
Ci-joint quelques liens Web pour la configuration d'IPV6 avec RADVD / DHCPCD5.
J'ai traduis la documentation de radvd.conf
en français à default que man --locale=fr radvd.conf
me retourne la doc en EN.
J'ai traduis la documentation de dhcpd.conf
en français à default que man --locale=fr dhcpd.conf
me retourne la doc en EN.
Ces services / serveurs logiciels permettent de configurer un réseau IPv6 récursif de manière automatique avec l'aide du démon rdnssd
(IPv6 recursive DNS server discovery daemon).
Il permettent aux adminstrateurs réseaux de configurer les adresses IPv6, les serveurs DNS, les routes IPv6 et pleins d'autres options IPv6.
- Soit configurer des adresses IPv6 UNICAST-GLOBALES (
2001:db8:beef:42::/64
), - soit configurer des adresses IPv6 LAN (
fc00::/7
etfd00::/8
: ULA: Unique Locales Address), - soit configurer des adresses IPv6 de liens local (
fe80::/64
).
On recevra des IPv6 Router Advertisement Options for DNS Configuration (RFC 8106) via l'ICMPv6 selon comment les variables du système sur les cartes réseaux sont configurées :
Les variables système (sysctl -a
)
Les valeurs sont net.ipv6.conf.ETH.*
(carte),
il y aussi les valeurs par default net.ipv6.conf.default.*
et celles pour toutes les cartes réseaux net.ipv6.conf.all.*
:
-
disable_ipv6 = 0|1
(Activer/Désactiver l'IPv6) -
forwarding = 0|1
(Activer/Désactiver le transfert entre les cartes réseaux) -
accept_ra = 0|1|2
0
= ne pas accepter les annonces du routeur
1
= accepter les annonces du routeur
2
= accepter les annonces du routeur seulement et si la variable systèmeforwarding
de la carte est configurée à1
-
proxy_ndp = 0|1
(Activer/Désactiver le Network Discovery Protocol) -
autoconf = 0|1
(Activer/Désactiver l'Auto-configuration de la carte réseau) -
accept_dad = 0|1
(Activer/Désactiver l'envoie d'informations si l'adresse IPv6 est dupliquée) -
accept_redirects = 0|1
(0 default) -
accept_source_route = 0|1
(0 default)
Il ne faut pas oublier les valeurs de net.ipv6.route.*
(itinéraire) et net.ipv6.neigh.*
(voisins) et les autres net.ipv6.*
^^ :)
Pour configurer ces variables à la volé, on execute la ligne de commande sysctl -w net.ipv6.conf.vmbr0.forwarding=1
, par exemple pour activer le transfert entre les cartes réseaux (ici le bridge vmbr0) ou en éditant le fichier /etc/sysctl.conf
pour que les valeurs sont prises en compte dès le démarage de la machine (sysctl -f
par executer les variables système du fichier).
Les variables matériels des cartes réseau (netstats -i
)
Je fait un aparté sur le mode promiscuous des cartes réseaux
qui sert à envoyer toutes les requêtes sur toutes les cartes (au lieu d'aller directement où il faut - cela permet d'écouter tout le réseau (pour snifer les reqêtes depuis un endroit/une carte)).
Les Flag/drapeaux sont :
B
flag is for broadcastM
flag is for multicastP
flag is for promisc modeR
is for runningU
is for up
Pour activer le mode promiscuous utiliser une (1) des 2 commandes ci-dessous :
ip link set eth1 promisc on ifconfig eth1 promisc
Pour désactiver le mode promiscuous utiliser une (1) des 2 commandes ci-dessous :
ip link set eth1 promisc off ifconfig eth1 -promisc
Mode : Le réseau dit "host-only"
Dans ce mode de fonctionnement, seul l'hôte à accès au réseau. De ce fait, la machine virtuelle n'aura pas accès au support physique local (ce qui empêchera notamment l'accès à Internet).
Mode : Promiscuous
Promiscuous mode (traduit de temps en temps en « mode promiscuité »), en informatique, se réfère à une configuration de la carte réseau, qui permet à celle-ci d'accepter tous les paquets qu'elle reçoit, même si ceux-ci ne lui sont pas adressés. Ce mode est une fonctionnalité généralement utilisée pour écouter le trafic réseau.
Installation des paquets (radvd
et isc-dhcp-server
)
On installe les paquets radvd
et isc-dhcp-server
sur le serveur (les clients pouraient installer dhcpcd5
) pour récupérer plus de paramètres qu'avec la commande dhclient -6
- à tester !
apt install radvd isc-dhcp-server
On édite/crée les fichiers /etc/radvd.conf
et /etc/dhcp/dhcpd6.conf
et on configure /etc/default/isc-dhcp-server
.
Et on suit les docs man ;)
Fichiers de configuration radvd.conf
et dhcpd6.conf
Pour l'instant mon fichier sur l'hôte /etc/dhcp/dhcpd6.conf
est configuré comme cela :
################################################################################# option dhcp6.domain-search "lab3w.fr"; option domain-name-servers ns2.lab3w.fr, dns.lab3w.fr; max-lease-time 60; default-lease-time 60; ddns-update-style none; log-facility local7; # If this DHCP server is the official DHCP server for the local # network, the authoritative directive should be uncommented. authoritative; # User-conf-definition option dhcp6.next-hop code 242 = ip6-address; option dhcp6.next-server code 242 = ip6-address; ################################################################################# ################################################################################# # VMBR1 ############ shared-network network-br1 { subnet6 2607:5300:0060:9389:1ab3:003b:0100:0000/104 { range6 2607:5300:0060:9389:1ab3:003b:0100:0000 2607:5300:0060:9389:1ab3:003b:0100:ffff; # Prefix range for delegation to sub-routers prefix6 2607:5300:0060:9389:1ab3:003b:0100:0000 2606:5300:0060:9389:1ab3:003b:01ff:ff00 /120; # prefix6 2607:5300:0060:9389:1ab3:003b:0150:0000 2606:5300:0060:9389:1ab3:003b:0150:ff00 /120; option dhcp6.domain-search "zw3b.net"; option dhcp6.name-servers 2607:5300:0060:9389:1ab3:003b:0100:0001, 2001:0db8:25bb:ff52:1ab3:003b:1ac0:0201, 2001:4860:4860::8888, 2620:0:ccc::2; host zw3b_ipv6 { host-identifier option dhcp6.client-id 00:01:00:01:26:1d:30:f2:c6:31:2b:76:f3:a2; fixed-address6 2607:5300:0060:9389:1ab3:003b:0100:0001; # fixed-prefix6 2607:5300:0060:9389:1ab3:003b:0150:0000/104; } # User-conf-options # option dhcp6.next-hop 2001:0bc8:25bb:ff58:1ab3:003a:8f00:f; # option dhcp6.next-server 2001:0bc8:25bb:ff58:1ab3:003a:8f00:f; } } ################################################################################# ################################################################################# # VMBR2 ############ shared-network network-br2 { subnet6 2607:5300:0060:9389:1ab3:003b:0200:0000/104 { # range6 2607:5300:0060:9389:1ab3:003b:0200:0000 2607:5300:0060:9389:1ab3:003b:02ff:ffff; range6 2607:5300:0060:9389:1ab3:003b:0200:0000 2607:5300:0060:9389:1ab3:003b:0200:ffff; # Prefix range for delegation to sub-routers # prefix6 2607:5300:0060:9389:1ab3:003b:0200:0000 2606:5300:0060:9389:1ab3:003b:02ff:ff00 /120; # prefix6 2607:5300:0060:9389:1ab3:003b:0250:0000 2606:5300:0060:9389:1ab3:003b:0250:ff00 /120; option dhcp6.domain-search "zw3b.net"; option dhcp6.name-servers 2607:5300:0060:9389:1ab3:003b:0100:0001, 2001:0db8:25bb:ff52:1ab3:003b:1ac0:0201, 2001:4860:4860::8888, 2620:0:ccc::2; # AVEC RADVD SANS AdvRASrcAddress host mail_DHCPv6 { host-identifier option dhcp6.client-id 00:02:00:00:ab:11:bc:c5:6e:eb:01:0b:f0:d7; fixed-address6 2607:5300:0060:9389:1ab3:003b:0200:0001; } # AVEC RADVD AVEC AdvRASrcAddress host mail_AdvRASrcAddress { host-identifier option dhcp6.client-id 00:02:00:00:ab:11:bc:c5:6e:eb:01:0b:f0:d7; fixed-address6 2607:5300:0060:9389:1ab3:003b:0200:0001; } # User-conf-options # option dhcp6.next-hop 2001:0bc8:25bb:ff58:1ab3:003a:8f00:f; # option dhcp6.next-server 2001:0bc8:25bb:ff58:1ab3:003a:8f00:f; } } #################################################################################
Pour l'instant mon fichier sur l'hôte /etc/radvd.conf
est configuré comme cela :
# Interface vers le réseau Internet (OVH) interface vmbr0 { AdvSendAdvert on; # Le routeur envoie les avertissements AdvManagedFlag on; AdvRASolicitedUnicast on; # default AdvOtherConfigFlag on; AdvRASrcAddress { fe80::1:1; }; prefix 2607:5300:0060:9389:0000:0000:0000:0000/64 { AdvRouterAddr on; # par défaut à off AdvOnLink on; AdvAutonomous on; }; # RDNSS 2607:5300:60:9389::1 {}; # DNSSL lab3w.fr ipv10.net {}; }; # Interface vers une VM avec des containers (lxc) interface vmbr1 { AdvSendAdvert on; AdvManagedFlag on; AdvRASolicitedUnicast on; # default AdvOtherConfigFlag on; AdvRASrcAddress { fe80::1:1; }; prefix 2607:5300:0060:9389:1ab3:003b:01ff:00ff/104 { AdvRouterAddr on; AdvAutonomous on; }; }; # Interface vers une VM simple interface vmbr2 { AdvSendAdvert on; AdvManagedFlag on; prefix 2607:5300:0060:9389:1ab3:003b:02ff:00ff/104 { AdvRouterAddr on; }; }; # Interface de Test vers containers (lxc) sur l'hôte interface vmbr3 { AdvSendAdvert on; AdvManagedFlag on; prefix 2607:5300:0060:9389:1ab3:003b:abcd:000f/112 { AdvRouterAddr on; }; };
En activant les accept_ra=1
ou accept_ra=2
sur les machines clients je recois bien ma passerelle fe80::
. Mais n'arrive pas à pinguer l'internet.
- J'arrive bien à
request
mais çà nereply
pas (commandeping6
). - J'arrive bien à
request/reply
sur le même réseau (lien local) mais pas sur les autres réseaux (commandeping6
).
Je vous écris 2 alias de tcpdump
pour visualiser les requêtes IPv6 et ICMPv6 :
alias tcpd_ipv6="tcpdump -s0 -t -n ip6 or proto ipv6 and port ! 22 -i ${1}" alias tcpd_icmpv6="tcpdump -s0 -n 'icmp6 and (ip6[40+0]&0xFE == 128)' and port ! 22 -i ${1}"
à executer de cette manière : tcpd_icmpv6 vmbr0
par exemple.
CF : Voir aussi la commande radvdump
qui dumps les Advertisements/Annonces du Router.
Mes cartes / bridges réseaux ont ses adresses de liens locales :
# HOST > INTERNET --------------------- # ------------------------------------- vmbr0 : fe80::ec4:7aff:fe02:5fa4/64 2607:5300:0060:9389:0000:0000:0000:0001/64 2607:5300:0060:9389:00ff:00ff:00ff:00ff/128 # ------------------------------------- # ------------------------------------- # HOST > BR_1 # ------------------------------------- vmbr1 : fe80::5059:adff:fe2c:f03a/64 2607:5300:0060:9389:1ab3:003b:01ff:00ff/104 vmbr1 : fe80::c887:34ff:fec7:b515/64 # ------------------------------------- # VM_1 -------------------------------- # BR_0 > HOST-------------------------- vmbr0 : fe80::c431:2bff:fe76:f3a2/64 2607:5300:0060:9389:1ab3:003b:0100:0001/104 # BR_1 > CT --------------------------- vmbr1 : fe80::fc57:6dff:feda:ec6d/64 2607:5300:0060:9389:1ab3:003b:0150:00ff/112 # CT_DNS ------------------------------ eth0 : fe80::f0a5:68ff:fed8:4c2a/64 2607:5300:0060:9389:1ab3:003b:0150:0001/112 # CT_WW1 ------------------------------ eth0 : fe80::50de:c4ff:fef6:666a/64 2607:5300:0060:9389:1ab3:003b:0150:0001/112 # CT_SMB ------------------------------ eth0 : fe80::e8ed:c3ff:fe13:23bb/64 2607:5300:0060:9389:1ab3:003b:0150:0002/112 # ------------------------------------- # HOST > BR_2 vmbr2 : fe80::3ca0:c3ff:feb4:6b92/64 2607:5300:0060:9389:1ab3:003b:02ff:00ff/104 vmbr2 : fe80::2831:feff:fe3f:2f0d/64 # ------------------------------------- # BR_2 CT_DNS ------------------------- eth0 : fe80::f0a5:68ff:fed8:4c2a/64 2607:5300:0060:9389:1ab3:003b:0150:0001/112 # ------------------------------------- # HOST > BR_3 # ------------------------------------- vmbr3 : fe80::74ef:10ff:fe8c:908f/64 2607:5300:0060:9389:1ab3:003c:abcd:000f/116 vmbr3 : fe80::fcc1:2ff:fe61:507d/64 # ------------------------------------- # HOST CT_100 ------------------------- eth0 : fe80::ca9:afff:fef3:a4c2/64 2607:5300:0060:9389:1ab3:003c:abcd:0001/116 # HOST CT_101 ------------------------- eth0 : fe80::9cf9:dbff:fee7:5462/64 2607:5300:0060:9389:1ab3:003c:abcd:0002/116 # -------------------------------------
J'essaie de travailler sur les liens LOCals pour une fois (et non pas les adresses UNICAST GLOBALES (PUBLIQUES)).
Cordialement,
Romain
Liens Web : Documentations
- Connect - Editions Diamond | Initiation à IPv6 en pratique : IPv6, radvd et DHCPv6
- Fedora Project Wiki : Networking/Addressing
- IPv6 Router Advertisement Options for DNS Configuration (RFC6106)
- Le Démon d'Annonce de Routeur (radvd)
- Gestion d'un réseau d'une machine Virtuelle
- Linux bridge Isolation
- iptables Extensions (
rt_
: Match on IPv6 routing header) - Routing Configuration Over DHCPv6
- Linux-France.org : Configuration d'un routeur IPv6
- ISC DHCP Configuration avancée
- Alter.Org.UA : Setting up IPv6 ISP
- RIPE Network Coordination Centre : Advanced IPv6 Training Course - September 2018 (PDF)
- Services de passerelle
- Routage avancé avec marquage de paquet et rp_filter (IPv4)
Request For Comments : Documents officiels décrivant les aspects et spécifications techniques d'Internet
- RFC 4862 : IPv6 Stateless Address Autoconfiguration
- RFC 6106 : IPv6 Router Advertisement Options for DNS Configuration (Novembre 2010)
- RFC 8106 : IPv6 Router Advertisement Options for DNS Configuration (Mars 2017)
- RFC 8415 : Dynamic Host Configuration Protocol for IPv6 (DHCPv6)