ZW3B :-: API Client * Contents * Docs by LAB3W.ORJ

Translate this page

Name : BETA-TESTERS

Project name : ZW3B-API-BETA-TESTERS

Authorized. - 200 - Client API Name and Origin Wildcard OK

¿Comment? 'Ou' ¿Que faire?, OS GNU/Linux, Réseaux, Configuration d'IPV6 avec RADVD / DHCPDv6

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

Author : O.Romain.Jaillet-ramey

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.

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.* :

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 :

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
Retirer les numéros de lignes

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
Retirer les numéros de lignes

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
Retirer les numéros de lignes

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
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#################################################################################
Retirer les numéros de lignes

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
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};
Retirer les numéros de lignes

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.


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}"
Retirer les numéros de lignes

à 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))
Retirer les numéros de lignes

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
Retirer les numéros de lignes

! 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
Retirer les numéros de lignes

J'essaie de travailler sur les liens LOCals pour une fois (et non pas les adresses UNICAST GLOBALES (PUBLIQUES)).



Cordialement,
Romain

Liens Web : Documentations

Request For Comments : Documents officiels décrivant les aspects et spécifications techniques d'Internet


<< Comment-faire un réseau IPv6 ? Firewall ICMPv6

Comment-faire un réseau IPv6 - Introduction >>