Informations :
Dates
- Publish : : Friday 27 march 2020
- Modification : Monday 13 april 2020
- 3630 views
Share :
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.
- 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 :
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
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 !
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 ;)
Fichiers de configuration radvd.conf
et dhcpd6.conf
DHCPdv6 : Dynamic Host Configuration Protocol version 6
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 027subnet6 2607:5300:0060:9389:1ab3:003b:0100:0000/104 {
028 029range6 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
032prefix6 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 035option dhcp6.domain-search "zw3b.net";
036option dhcp6.name-servers
0372607:5300:0060:9389:1ab3:003b:0100:0001,
0382001:0db8:25bb:ff52:1ab3:003b:1ac0:0201,
0392001:4860:4860::8888,
0402620:0:ccc::2;
041 042host zw3b_ipv6 {
043host-identifier option dhcp6.client-id 00:01:00:01:26:1d:30:f2:c6:31:2b:76:f3:a2;
044fixed-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 063subnet6 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;
066range6 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 071option dhcp6.domain-search "zw3b.net";
072option dhcp6.name-servers
0732607:5300:0060:9389:1ab3:003b:0100:0001,
0742001:0db8:25bb:ff52:1ab3:003b:1ac0:0201,
0752001:4860:4860::8888,
0762620:0:ccc::2;
077 078# AVEC RADVD SANS AdvRASrcAddress
079host mail_DHCPv6 {
080host-identifier option dhcp6.client-id 00:02:00:00:ab:11:bc:c5:6e:eb:01:0b:f0:d7;
081fixed-address6 2607:5300:0060:9389:1ab3:003b:0200:0001;
082}
083 084# AVEC RADVD AVEC AdvRASrcAddress
085host mail_AdvRASrcAddress {
086host-identifier option dhcp6.client-id 00:02:00:00:ab:11:bc:c5:6e:eb:01:0b:f0:d7;
087fixed-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
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 004AdvSendAdvert on; # Le routeur envoie les avertissements
005AdvManagedFlag on;
006AdvRASolicitedUnicast on; # default
007AdvOtherConfigFlag on;
008 009AdvRASrcAddress {
010fe80::1:1;
011};
012 013prefix 2607:5300:0060:9389:0000:0000:0000:0000/64 {
014 015AdvRouterAddr on; # par défaut à off
016AdvOnLink on;
017AdvAutonomous 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 029AdvSendAdvert on;
030AdvManagedFlag on;
031AdvRASolicitedUnicast on; # default
032AdvOtherConfigFlag on;
033 034AdvRASrcAddress {
035fe80::1:1;
036};
037 038prefix 2607:5300:0060:9389:1ab3:003b:01ff:00ff/104 {
039AdvRouterAddr on;
040AdvAutonomous on;
041};
042 043};
044 045# Interface vers une VM simple
046interface vmbr2 {
047AdvSendAdvert on;
048AdvManagedFlag on;
049 050prefix 2607:5300:0060:9389:1ab3:003b:02ff:00ff/104 {
051AdvRouterAddr on;
052 053};
054 055};
056 057# Interface de Test vers containers (lxc) sur l'hôte
058interface vmbr3 {
059AdvSendAdvert on;
060AdvManagedFlag on;
061 062prefix 2607:5300:0060:9389:1ab3:003b:abcd:000f/112 {
063AdvRouterAddr 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.
- 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 :
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.
Information de Cisco : DHCPv6 Options Support
PDF disponible ici : DHCPv6 Options Support
CAPWAP Access Controller DHCPv6 Option (Option DHCPv6 du contrôleur d'accès CAPWAP)
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 Search List Option (Option de liste de recherche DNS)
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.!
DHCPv6 Client Link-Layer Address Option (Option d'adresse de couche de liaison du client DHCPv6)
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.
DHCP Relay Agent (Agent de relais DHCP )
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
Liens Web : Documentations
- ManPages Debian : radvd.conf.5.en.html
- 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)
- Exemple : radvd.conf
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)