Name : BETA-TESTERS
Project name : ZW3B-API-BETA-TESTERS
Authorized. - 200 - Client API Name and Origin Wildcard OK
Liens Web pour la configuration d'IPV6 avec RADVD / DHCPv6 + Man FR radvd.conf 2.17 (5) + dhcpd.conf (5) - RDNSSD : IPv6 Recursive DNS Server Discovery
NdM : 2021/02/09 - 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 / DHCPv6.
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.
2001:db8:beef:42::/64
),fc00::/7
et fd00::/8
: ULA: Unique Locales Address ),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 :
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 routeur1
= accepter les annonces du routeur2
= accepter les annonces du routeur seulement et si la variable système forwarding
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).
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 upPour activer le mode promiscuous utiliser une (1) des 2 commandes ci-dessous :
Script avec 2 lignes
001ip link set eth1 promisc on 002ifconfig eth1 promisc
Pour désactiver le mode promiscuous utiliser une (1) des 2 commandes ci-dessous :
Script avec 2 lignes
001ip link set eth1 promisc off 002ifconfig eth1 -promisc
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).
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.
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 !
Script avec 1 ligne
001apt 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 ;)
radvd.conf
et dhcpd6.conf
DHCPv6 est un protocole de configuration dynamique pour IPv6. DHCPv6 est un mécanisme d'attribution des adresses IPv6 et de paramétrage de la connexion au réseau qui fonctionne comme DHCP, son équivalent en IPv4. Un autre mécanisme d'attribution est Neighbor Discovery Protocol. WikipediA
Pour l'instant mon fichier sur l'hôte /etc/dhcp/dhcpd6.conf
est configuré comme cela :
Script avec 97 lignes
001################################################################################# 002option dhcp6.domain-search "lab3w.fr"; 003option domain-name-servers ns2.lab3w.fr, dns.lab3w.fr; 004 005max-lease-time 60; 006default-lease-time 60; 007 008ddns-update-style none; 009 010log-facility local7; 011 012# If this DHCP server is the official DHCP server for the local 013# network, the authoritative directive should be uncommented. 014authoritative; 015 016# User-conf-definition 017option dhcp6.next-hop code 242 = ip6-address; 018option dhcp6.next-server code 242 = ip6-address; 019################################################################################# 020 021################################################################################# 022# VMBR1 023############ 024 025shared-network network-br1 { 026 027 subnet6 2607:5300:0060:9389:1ab3:003b:0100:0000/104 { 028 029 range6 2607:5300:0060:9389:1ab3:003b:0100:0000 2607:5300:0060:9389:1ab3:003b:0100:ffff; 030 031 # Prefix range for delegation to sub-routers 032 prefix6 2607:5300:0060:9389:1ab3:003b:0100:0000 2606:5300:0060:9389:1ab3:003b:01ff:ff00 /120; 033# prefix6 2607:5300:0060:9389:1ab3:003b:0150:0000 2606:5300:0060:9389:1ab3:003b:0150:ff00 /120; 034 035 option dhcp6.domain-search "zw3b.net"; 036 option dhcp6.name-servers 037 2607:5300:0060:9389:1ab3:003b:0100:0001, 038 2001:0db8:25bb:ff52:1ab3:003b:1ac0:0201, 039 2001:4860:4860::8888, 040 2620:0:ccc::2; 041 042 host zw3b_ipv6 { 043 host-identifier option dhcp6.client-id 00:01:00:01:26:1d:30:f2:c6:31:2b:76:f3:a2; 044 fixed-address6 2607:5300:0060:9389:1ab3:003b:0100:0001; 045# fixed-prefix6 2607:5300:0060:9389:1ab3:003b:0150:0000/104; 046 } 047 048 # User-conf-options 049# option dhcp6.next-hop 2001:0bc8:25bb:ff58:1ab3:003a:8f00:f; 050# option dhcp6.next-server 2001:0bc8:25bb:ff58:1ab3:003a:8f00:f; 051 052 } 053 054} 055################################################################################# 056 057################################################################################# 058# VMBR2 059############ 060 061shared-network network-br2 { 062 063 subnet6 2607:5300:0060:9389:1ab3:003b:0200:0000/104 { 064 065# range6 2607:5300:0060:9389:1ab3:003b:0200:0000 2607:5300:0060:9389:1ab3:003b:02ff:ffff; 066 range6 2607:5300:0060:9389:1ab3:003b:0200:0000 2607:5300:0060:9389:1ab3:003b:0200:ffff; 067 # Prefix range for delegation to sub-routers 068# prefix6 2607:5300:0060:9389:1ab3:003b:0200:0000 2606:5300:0060:9389:1ab3:003b:02ff:ff00 /120; 069# prefix6 2607:5300:0060:9389:1ab3:003b:0250:0000 2606:5300:0060:9389:1ab3:003b:0250:ff00 /120; 070 071 option dhcp6.domain-search "zw3b.net"; 072 option dhcp6.name-servers 073 2607:5300:0060:9389:1ab3:003b:0100:0001, 074 2001:0db8:25bb:ff52:1ab3:003b:1ac0:0201, 075 2001:4860:4860::8888, 076 2620:0:ccc::2; 077 078 # AVEC RADVD SANS AdvRASrcAddress 079 host mail_DHCPv6 { 080 host-identifier option dhcp6.client-id 00:02:00:00:ab:11:bc:c5:6e:eb:01:0b:f0:d7; 081 fixed-address6 2607:5300:0060:9389:1ab3:003b:0200:0001; 082 } 083 084 # AVEC RADVD AVEC AdvRASrcAddress 085 host mail_AdvRASrcAddress { 086 host-identifier option dhcp6.client-id 00:02:00:00:ab:11:bc:c5:6e:eb:01:0b:f0:d7; 087 fixed-address6 2607:5300:0060:9389:1ab3:003b:0200:0001; 088 } 089 090 091 # User-conf-options 092# option dhcp6.next-hop 2001:0bc8:25bb:ff58:1ab3:003a:8f00:f; 093# option dhcp6.next-server 2001:0bc8:25bb:ff58:1ab3:003a:8f00:f; 094 095 } 096} 097#################################################################################
radvd est un logiciel open source qui implémente les annonces lien-local des adresses de routeurs IPv6 et des préfixes de réseau IPv6 au moyen du protocole Neighbor Discovery Protocol conformément à la RFC 2461. WikipediA
L'option RDNSS contient une ou plusieurs adresses IPv6 de serveurs DNS récursifs. Toutes les adresses partagent la même valeur à vie. S'il est souhaitable d'avoir des valeurs de durée de vie différentes, plusieurs options RDNSS peuvent être utilisées.
La liste de recherche DNS (DNS Search List (DNSSL)) est une liste de noms de domaine de suffixe DNS (Domain Name System) utilisés par les hôtes IPv6 lorsqu'ils effectuent des recherches de requêtes DNS pour des noms de domaine courts et non qualifiés. L'option DNSSL contient un ou plusieurs noms de domaine jusqu'à 5.
ABRO (Authoritative Border Router Option) - ABRO (option de routeur frontalier faisant autorité).
Pour l'instant mon fichier sur l'hôte /etc/radvd.conf
est configuré comme cela :
Script avec 67 lignes
001# Interface vers le réseau Internet (OVH) 002interface vmbr0 { 003 004 AdvSendAdvert on; # Le routeur envoie les avertissements 005 AdvManagedFlag on; 006 AdvRASolicitedUnicast on; # default 007 AdvOtherConfigFlag on; 008 009 AdvRASrcAddress { 010 fe80::1:1; 011 }; 012 013 prefix 2607:5300:0060:9389:0000:0000:0000:0000/64 { 014 015 AdvRouterAddr on; # par défaut à off 016 AdvOnLink on; 017 AdvAutonomous on; 018 019 }; 020 021# RDNSS 2607:5300:60:9389::1 {}; 022# DNSSL lab3w.fr ipv10.net {}; 023 024}; 025 026# Interface vers une VM avec des containers (lxc) 027interface vmbr1 { 028 029 AdvSendAdvert on; 030 AdvManagedFlag on; 031 AdvRASolicitedUnicast on; # default 032 AdvOtherConfigFlag on; 033 034 AdvRASrcAddress { 035 fe80::1:1; 036 }; 037 038 prefix 2607:5300:0060:9389:1ab3:003b:01ff:00ff/104 { 039 AdvRouterAddr on; 040 AdvAutonomous on; 041 }; 042 043}; 044 045# Interface vers une VM simple 046interface vmbr2 { 047 AdvSendAdvert on; 048 AdvManagedFlag on; 049 050 prefix 2607:5300:0060:9389:1ab3:003b:02ff:00ff/104 { 051 AdvRouterAddr on; 052 053 }; 054 055}; 056 057# Interface de Test vers containers (lxc) sur l'hôte 058interface vmbr3 { 059 AdvSendAdvert on; 060 AdvManagedFlag on; 061 062 prefix 2607:5300:0060:9389:1ab3:003b:abcd:000f/112 { 063 AdvRouterAddr on; 064 065 }; 066 067};
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.
request
mais çà ne reply
pas (commande ping6
).request/reply
sur le même réseau (lien local) mais pas sur les autres réseaux (commande ping6
).
Je vous écris 2 alias de tcpdump
pour visualiser les requêtes IPv6 et ICMPv6 :
Script avec 2 lignes
001alias tcpd_ipv6="tcpdump -s0 -t -n ip6 or proto ipv6 and port ! 22 -i ${1}" 002alias 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.
PDF disponible ici : DHCPv6 Options Support
Le protocole de contrôle et de provisionnement des points d'accès sans fil (CAPWAP) permet aux points d'accès légers d'utiliser DHCPv6 pour découvrir un contrôleur sans fil auquel il peut se connecter. CAPWAP est un protocole standard interopérable qui permet à un contrôleur de gérer une collection de points d'accès sans fil.
Les points d'accès sans fil utilisent l'option DHCPv6 52 (RFC 5417) pour fournir l'interface de gestion IPv6 principale Contrôleurs sans fil, secondaire et tertiaire.
Les modes d'adressage sans état et avec étatDHCPv6 sont pris en charge. En mode avec état, les points d'accès obtiennent à la fois l'adresse IPv6 et des informations supplémentaires sur le réseau exclusivement à partir du serveurDHCPv6.Dans les deux modes, un serveur DHCPv6 est requis pour fournir l'option 52 si le contrôleur sans fil découvre à l'aide de DHCPv6 est requis.Lorsque le paquet MAX_PACKET_SIZEv6 est requis.
Lorsque le paquet MAX_PACKET_SIZEv6 est requis, dans les deux modes, un serveur DHCPv6 est requis pour fournir l'option 52 si le contrôleur sans fil découvre à l'aide de DHCPv6 est requis.
DNS SearchList (DNSSL) est une liste de noms de domaine de suffixe DNS (DomainName System) utilisés par les hôtes IPv6 lorsqu'ils effectuent des recherches de requêtes DNS pour des noms de domaine courts et non qualifiés. être utilisé. Si des valeurs de durée de vie différentes sont requises, plusieurs options DNSSL peuvent être utilisées. Il peut y avoir un maximum de 5 DNSSLs.
Les messages DHCP avec des noms DNSSL longs sont ignorés par l'appareil.
Note : Si les informations DNS sont disponibles à partir de plusieurs annonces de routeur (RA) et / ou à partir de DHCP, l'hôte doit maintenir une liste ordonnée de ces informations DNS.
La RFC6106 spécifie les options d'annonce de routeur IPv6 (RA) pour permettre aux routeurs IPv6 d'annoncer une liste de recherche DNS (DNSSL) aux hôtes IPv6 pour une configuration DNS améliorée.
La plage de durée de vie DNS (DNS lifetime range) doit être comprise entre l'intervalle RA maximum et deux fois l'intervalle RA maximum, comme illustré dans l'exemple suivant:
Script avec 1 ligne
001(maxra interval)<= dns lifetime<= (2*(maxra interval))
L'intervalle RA maximum (maximum RA interval) peut avoir une valeur comprise entre 4 et 1 800 secondes (la valeur par défaut est de 240 secondes). Les exemples suivants indiquent une durée hors plage:
Script avec 1 ligne
001Device(config-if)#ipv6nd ra dns-search-listsss.com3600
! Durée de vie configurée hors plage pour l'interface qui a l'intervalle RA maximum par défaut.!
L'option d'adresse de couche liaison du client DHCPv6 (RFC 6939) définit un mécanisme facultatif et l'option DHCPv6 associée pour permettre aux agents de relais DHCPv6 de premier saut (agents de relais qui sont connectés au même lien que le client) de fournir l'adresse de couche liaison du client dans DHCPv6 les messages envoyés vers le serveur.
L'option Adresse de couche liaison client n'est échangée qu'entre les agents de relais et les serveurs. Les clients DHCPv6 ne sont pas conscients de l'utilisation de l'option Client Link-Layer Address. Le client DHCPv6 ne doit pas envoyer l'option Client Link-Layer Address et doit ignorer l'option Client Link-Layer Address si elle est reçue.
Chaque client et serveur DHCPv6 est identifié par un identifiant unique DHCP (DUID). Le DUID est transporté dans les options d'identificateur de client et d'identificateur de serveur. Le DUID est unique sur tous les clients et serveurs DHCP, et il est stable pour tout client ou serveur spécifique. DHCPv6 utilise des DUID basés sur des adresses de couche de liaison pour l'identifiant du client et du serveur.
Un agent de relais DHCP est un périphérique de couche 3 qui transfère les paquets DHCP entre les clients et les serveurs. Les agents de relais transfèrent les demandes et les réponses entre les clients et les serveurs lorsqu'ils ne se trouvent pas sur le même sous-réseau physique. Le transfert d'agent de relais est différent du transfert normal de couche 2, dans lequel les datagrammes IP sont commutés de manière transparente entre les réseaux. Les agents de relais reçoivent des messages DHCP et génèrent de nouveaux messages DHCP à envoyer sur les interfaces de sortie.
Mes cartes / bridges réseaux ont ses adresses de liens locales - pour mémo ;) - les liens fe80:: ne change pas (trop) ^^ :
Script avec 52 lignes
001# HOST > INTERNET --------------------- 002# ------------------------------------- 003vmbr0 : fe80::ec4:7aff:fe02:5fa4/64 2607:5300:0060:9389:0000:0000:0000:0001/64 2607:5300:0060:9389:00ff:00ff:00ff:00ff/128 004# ------------------------------------- 005 006# ------------------------------------- 007# HOST > BR_1 008# ------------------------------------- 009vmbr1 : fe80::5059:adff:fe2c:f03a/64 2607:5300:0060:9389:1ab3:003b:01ff:00ff/104 010vmbr1 : fe80::c887:34ff:fec7:b515/64 011# ------------------------------------- 012 013# VM_1 -------------------------------- 014 015# BR_0 > HOST-------------------------- 016vmbr0 : fe80::c431:2bff:fe76:f3a2/64 2607:5300:0060:9389:1ab3:003b:0100:0001/104 017 018# BR_1 > CT --------------------------- 019vmbr1 : fe80::fc57:6dff:feda:ec6d/64 2607:5300:0060:9389:1ab3:003b:0150:00ff/112 020 021# CT_DNS ------------------------------ 022eth0 : fe80::f0a5:68ff:fed8:4c2a/64 2607:5300:0060:9389:1ab3:003b:0150:0001/112 023 024# CT_WW1 ------------------------------ 025eth0 : fe80::50de:c4ff:fef6:666a/64 2607:5300:0060:9389:1ab3:003b:0150:0001/112 026 027# CT_SMB ------------------------------ 028eth0 : fe80::e8ed:c3ff:fe13:23bb/64 2607:5300:0060:9389:1ab3:003b:0150:0002/112 029 030# ------------------------------------- 031# HOST > BR_2 032vmbr2 : fe80::3ca0:c3ff:feb4:6b92/64 2607:5300:0060:9389:1ab3:003b:02ff:00ff/104 033vmbr2 : fe80::2831:feff:fe3f:2f0d/64 034# ------------------------------------- 035 036# BR_2 CT_DNS ------------------------- 037eth0 : fe80::f0a5:68ff:fed8:4c2a/64 2607:5300:0060:9389:1ab3:003b:0150:0001/112 038 039# ------------------------------------- 040# HOST > BR_3 041# ------------------------------------- 042vmbr3 : fe80::74ef:10ff:fe8c:908f/64 2607:5300:0060:9389:1ab3:003c:abcd:000f/116 043vmbr3 : fe80::fcc1:2ff:fe61:507d/64 044# ------------------------------------- 045 046# HOST CT_100 ------------------------- 047eth0 : fe80::ca9:afff:fef3:a4c2/64 2607:5300:0060:9389:1ab3:003c:abcd:0001/116 048 049# HOST CT_101 ------------------------- 050eth0 : fe80::9cf9:dbff:fee7:5462/64 2607:5300:0060:9389:1ab3:003c:abcd:0002/116 051# ------------------------------------- 052
J'essaie de travailler sur les liens LOCals pour une fois (et non pas les adresses UNICAST GLOBALES (PUBLIQUES)).
Cordialement,
Romain
rt_
: Match on IPv6 routing header)