Bonjour,
Suite à cet article paru dans Developpez : IPv6 est un désastre, mais nous pouvons y remédier », le retour d’expérience d’un ingénieur DevOps. L’IPv6, serait une révolution incontournable, mais mal préparée
Pour Mathew Duggan, l’IPv6 est un désastre, mais « il faut le faire quand même, parce qu’il n’y a pas d’autre choix. » Il appelle les développeurs et les fournisseurs à se former et à se préparer à l’IPv6, puisqu’il s’agit d’une évolution inévitable.
Sources : Mathew Duggan’s blog post , Apnic
Je voudrais en connaître plus sur le multicast IPv6::/104 (pour comprendre sur un réseau plus petit « IPv6::/104 » que le réseau multicast « IPv6::/64 »).
Plus simple pour « commencer », avant de m’éparpiller sur de plus grand réseaux IPv6.
# ------------------------------------
# Network map : 2607:5300:60:9389::/64
# Network range :
# 2607:5300:0060:9389:0000:0000:0000:0000-
# 2607:5300:0060:9389:ffff:ffff:ffff:ffff
# Calculator IPv6 : http://www.gestioip.net/cgi-bin/subnet_calculator.cgi
# ------------------------------------
# LAB3W
# brige0 <-> WAN
2607:5300:60:9389:0000:0000:0000:0001 / 128 # (l'adresse IPv6 de sortit/d'entrée pour l'Internet)
2607:5300:60:9389:00ff:00ff:00ff:ffff / 64 # (multicast) RADVD par ici ??
# ------------------------------------
# brige1 <-> LB1 (vm)
2607:5300:60:9389:eeee:eed1:00ff:ffff / 100 # RADVD par ici ??
# brige2 <-> LB2 (vm)
2607:5300:60:9389:eeee:eed2:00ff:ffff / 100 # RADVD par ici ??
# ------------------------------------
# ------------------------------------
# LB1 (vm)
# ------------------------------------
# brige0
2607:5300:60:9389:eeee:eed1:ff00:0001 / 104 (multicast)
# ------------------------------------
# brige1 <-> CTs
2607:5300:60:9389:eeee:ee01:0000:ffff / 112
# LB1 Containers LXC
2607:5300:60:9389:eeee:ee01:0000:1000 / 112 # (name server 1) - Pour commencer, j'ai configuré "1000" sur le bloc IPv6::/ "112" -> "1fff" pour le réseau (lui-même) "2607:5300:60:9389:eeee:ee02:0000:0000/112", pour que cela soit plus rapide.
2607:5300:60:9389:eeee:ee01:0000:0010 / 112 # (web server 1)
2607:5300:60:9389:eeee:ee01:0000:0dc1 / 108 # (domain controler 1) - L'AD (imaginons, un Active Directy, qui pourrait servir pour d'autres réseaux comme "2607:5300:60:9389:eeee:ee01:0000:0fff/120" ou encore "2607:5300:60:9389:eeee:ee01:beef:0fff/108" ou encore "2607:5300:60:9389:eeee:ee01:beef:c7a4/124")
2607:5300:60:9389:eeee:ee01:0000:0db1 / 112 # (data bases 1)
# ------------------------------------
# ------------------------------------
# LB2 (vm)
# ------------------------------------
# brige0
2607:5300:60:9389:eeee:eed2:ff00:0001 / 104 (multicast)
# ------------------------------------
# brige1 <-> CTs
2607:5300:60:9389:eeee:ee02:0000:ffff / 112
# LB2 Containers LXC
2607:5300:60:9389:eeee:ee02:0001:1000 / 118 ? # Service Location Protocol (SLP) - (name server 2)
2607:5300:60:9389:eeee:ee02:0000:0010 / 112 # (web server 2)
2607:5300:60:9389:eeee:ee02:0000:0dc2 / 108 # (domain controler 2) - L'AD (imaginons, un Active Directory, qui pourrait servir pour d'autres réseaux comme "2607:5300:60:9389:eeee:ee02:0000:0fff/120" ou encore "2607:5300:60:9389:eeee:ee02:beef:0000/108" ou encore "2607:5300:60:9389:eeee:ee02:beef:c7a4/124")
2607:5300:60:9389:eeee:ee02:0000:0db2 / 112 # (data bases 2)
# ------------------------------------
Ci-dessus, une présentation avec ma configuration d’adresses IPv6 Unicast (publique et accessible pour le « broadcast » IPv6 LAN.
Pour cette IP, j’ai une question :
2607:5300:60:9389:eeee:ee02:0001:1000 / 118 # Service Location Protocol (SLP) + (name server 2)
Certes, cette IP/serveur fait partit du « noeud » du réseau multicast / 104 / 64 mais avec une adresse « 02:ff01:1000/118 » (
01:0000-01:13ff / 118
) alors que mon /112 est un autre réseau « 02:ff00:000/112 » (00:0000-ffff / 112
), peuvent t’il communiquer ?
Je souhaite lier ces machines automatiquement au WAN, d’une machine à l’autre avec des adresses de liens locals « fe80::/10
» pour elles-mêmes et ajouter les gateways.
En clair, je souhaite créer un « routeur » IPv6, sur ma machine connectée à Internet, pour qu’elle voit, et créée des liens locals et des passerelles sur tous mes sous réseaux, et sous sous réseaux.
Plus clair, je souhaite avoir qu’une et une seule adresse IPv6 qui sorte sur Internet - celle-ci : 2607:5300:60:9389:0:0:0:0001/128
et avoir des sous réseaux et des sous-sous réseaux cachés, donc, indisponible de l’internet en « entrée » mais avec lesquelles je puisse naviguer sur la toile.
Par exemple :
# Ferme le "routeur association" pour la carte connectée au ISP (OVH) et désactive l'autoconfiguration.
sysctl net.ipv6.conf.vmbr0.forwarding = 1
sysctl net.ipv6.conf.vmbr0.autoconf = 0
sysctl net.ipv6.conf.vmbr0.accept_redirects = 0
sysctl net.ipv6.conf.vmbr0.accept_ra = 0
sysctl net.ipv6.conf.vmbr0.proxy_ndp = 0
sysctl net.ipv6.conf.vmbr0.accept_source_route = 0
# Sur mes cartes connectées aux machines
sysctl net.ipv6.conf.vmbr1.forwarding = 1 # transfert des paquets entre cartes réseaux
sysctl net.ipv6.conf.vmbr1.autoconf = 0
sysctl net.ipv6.conf.vmbr1.accept_redirects = 0
sysctl net.ipv6.conf.vmbr1.accept_ra = 2 # ici j'ai mis "2" puisque, j'ai activé le "forwarding" entre les cartes réseaux
sysctl net.ipv6.conf.vmbr1.proxy_ndp = 1 # activer les annonces de recherches d'ordi (carte réseaux) pour créer des liens entre eux/elles.
sysctl net.ipv6.conf.vmbr1.accept_source_route = 0
Note de Moi-même 18h40 GMT+2 : il faut peut-être que j’active « net.ipv6.conf.all.autoconf=1
» sur toutes mes cartes réseaux - je vais tester
J’arrive bien à faire des liens « fe80::/64
» , sur les interfaces/cartes réseaux en lien direct et gateway « fe80::/64
» ; donc, des containers, et des machines (virtuelle), mais pas sur les cartes/interfaces « suivantes », des sous réseaux (pour les containers des autres machines, ou autres appareils connectés à elles) ; Et cela sans avoir besoin de "réinstaller d’autres démons RADvD sur chacunes de ces machines. Ce serait trop la galère.
Je crois que c’est sûrement l’option « AdvRASrcAddress
» de RADvD, mais…
Pour cela j’utilise RADvD, en activant le NDP (Neighbor Discovery Protocol, protocole de découverte de voisins) sur les cartes, les Sollicitation du routeur (RS) et l’association RA (Routeur Association).
Qui connait RADvD (Router Advertisement Daemon, démon d’annonces de routeurs), et ICMPv6 ( Internet Control Message Protocol, protocole de messages de contrôle Internet) ?
Je ne souhaite pas avoir de serveur DHCPd (Dynamic Host Configuration Protocol, protocole de configuration dynamique de carte réseaux) version 6 - Pas besoin de configuration d’adresse IPv6 dynamique unicast (publique) ni d’adresse privée ULA, Unique local address).
Mes demandes de réflexions :
- Mes commentaires sur la « map réseaux » sont-ils plausibles ?
- Comment créer des liens, sur des liens, et encore des liens dynamiquement ?
Je sais que c’est possible
J’ai déjà vu, çà, chez Online.net, ils font comme çà, dès qu’une machine (et cela même derrière un lien PPP IPsec), juste en configurant la passerelle du FAI/ISP (online.net) sur cette machine et en ajoutant une route IPv6 « 2000::/3
» pour Internet, j’arrivais à surfer en IPv6 depuis mes sous-sous réseaux ; sans ajouter des adresses IPv6 proxy de « neigh » (voisin) comme on doit le faire chez OVH pour pouvoir surfer, être connecté à Internet depuis un sous réseau IPv6 de leur bloc IPv6.
Je souhaiterais, avoir UNE est UNE seule paserelle pour tout mon réseau IPv6 « privé, local, vpn – ULA, et Unicast) » sans « attraper/toucher » à la passerelle de mon ISP (Internet Service Provider) OVH – pour qu’il ne voit rien (Le FAI verrait seulement la machine connectée à lui), dirais-je.
Ce serait préférable et logique de configurer RADvD sur l’interface « vmbr0 », le bloc « ::/64 » qui pourrait / devrait « commencer à créer des liens (ils sont créés oui) » sur les bridges « br1
» et « br2
», s’associer avec le routeur « global », et envoyer des annonces pour trouver les voisins, et les voisins des voisins.
Wikipédia :
- Internet Protocol version 6 (IPv6)
- Internet Control Message Protocol V6 (ICMPv6)
- Unique local address (ULA)
- Neighbor Discovery Protocol (NDP)
- Router Advertisement Daemon (RADvD)
- Dynamic Host Configuration Protocol (DHCPv6)
- SEcure Neighbor Discovery protocol (SEND)
- Cryptographically Generated Address (CGA)
RADvD prend également en charge les options recursive DNS server (RDNSS) et DNS search list (DNSSL) de NDP publiées dans la RFC 6106.
Configuration automatique d’une adresse IPv6 :
Sans état (Stateless Address Autoconfiguration, SLAAC) :
- autoconfiguration avec tirage pseudo aléatoire, l’adresse change dans le temps (RFC 4941),
- autoconfiguration basée sur une clé secrète et sur le préfixe réseau, ne dévoile pas l’adresse MAC et est stable pour chaque préfixe réseau, c’est l’usage recommandé pour une adresse fixe (RFC 8064, RFC 7217),
- autoconfiguration basée sur l’adresse MAC (EUI-64), adresse stable mais machine facilement identifiable, usage déconseillé par l’IETF depuis 2017 (RFC 8064, RFC 4862),
- utilisation d’adresses générées cryptographiquement (CGA, RFC 3972), qui lient l’adresse à la clé publique du client et qui peuvent être utilisées par SEND (SEcure Neighbor Discovery protocol).
Avec état :
- attribution par un serveur DHCPv6 (RFC 3315).
IANA : IPv6 Multicast Address Space Registry (Last Updated : 2023-08-21) et j’oubliais Internet Control Message Protocol version 6 (ICMPv6) Parameters.
J’ai une question en passant, sur la page d’adressage IPv6 du dessus, que signifie cette ligne ?
FF0X:0:0:0:0:0:0:101 Network Time Protocol (NTP) [RFC1119][RFC5905][David_Mills]
Que tous les serveurs NTP (Network Time Protocol ) doivent avoir « cette » adresse IPv6, la « 0101
» peut importe le bloc du dessus, tout les blocs (possible), n’importe quel bloc ?
Et cela pour que le NDP (Neighborhood Dicovery Protocol ), la découverte du réseau « global » ; et que toutes les applications qui devraient avoir besoin de contacter un « service du temps », puissent le trouver. C’est bien çà, nous sommes d’accord ?
Réponse :
La « signification » d’une adresse de diffusion groupée (multicast) allouée de façon permanente est indépendante de la valeur de la portée. Par exemple, si « groupe de serveurs NTP » reçoit une adresse de diffusion groupée permanente avec un identifiant de groupe de 101 (hex), alors :
FF01:0:0:0:0:0:0:101
signifie tous les serveurs NTP sur la même interface (c’est-à-dire le même nœud) que l’envoyeur,FF02:0:0:0:0:0:0:101
signifie tous les serveurs NTP sur la même liaison que l’envoyeur,FF05:0:0:0:0:0:0:101
signifie tous les serveurs NTP sur le même site que l’envoyeur,FF0E:0:0:0:0:0:0:101
signifie tous les serveurs NTP dans l’Internet.CF : RFC4291 section 2.7. Multicast Addresses (FR)
Donc, il me semble bien que les serveurs NTP (Network Time Protocol) doivent obligatoirement avoir cette « IP », qu’on appelle « un identifiant de groupe ».
Depuis quelque part sur mon site 01 :
ping ff05::101
pour trouver les serveurs NTP de mon site 01
ping ff08::101
pour trouver les serveurs NTP de mon organisation (plusieurs sites locals liés entre eux).
ping ff0e::101
pour trouver les serveurs NTP internet ? – il faut être en haut de la chaine style taper le ping
depuis ce serveur « 2001:db8::1 » par exemple
Çà doit être çà
J’ajoute ces pages de Stéphane Bortzmeyer :
Blog de Stéphane Bortzmeyer : RFC 4291 : IP Version 6 Addressing Architecture !
Blog de Stéphane Bortzmeyer : RFC 1035 : Domain names - implementation and specification
Blog de Stéphane Bortzmeyer : RFC 7772 : Reducing energy consumption of Router Advertisements
Lorsque des machines parlent IPv6 , elles reçoivent fréquemment des messages RA ( Router Advertisment ), que les routeurs émettent souvent avec trop d’enthousiasme. […]
À l’époque où IPv6 avait été conçu, on ne pensait pas vraiment à l’ Internet des Objets , […] Un RA ( Router Advertisement ) peut être sollicité ou pas (RFC 4861). Un RA sollicité est typiquement dû à l’arrivée d’une machine dans le réseau. Elle émet alors un RS ( Router Solicitation ) et le ou les routeurs, en le recevant, répondent par un RA. […] ce RA est envoyé à une adresse multicast, ce qui fait que toutes les machines le recevront et devront le traiter. […]
La possibilité de répondre aux RS par un RA unicast est autorisée par le RFC 4861 mais ce n’est pas obligatoire. […]
Enfin, la section 8 du RFC, portant sur la sécurité, rappelle qu’un routeur méchant peut ignorer ces conseils et envoyer beaucoup de RA exprès pour vider les batteries. Il faut donc prendre des mesures contre de tels routeurs (par exemple celle du RFC 6105).
Et pour vous aider à bien travailler, je vous ajoute cette page, sur le blog de Stéphane Bortzmeyer, Considerations for Transitioning Content to IPv6 et Le cours « Hacking IPv6 »
Liens personnels
Comment-faire un réseau IPv6 ? address category ¿Howto?
Configuration d’IPV6 avec RADVD / DHCPDv6 ¿Howto?
- radvd.conf - Traduction française du fichier de configuration du démon d’annonces du routeur radvd
- dhcpd.conf - Traduction française du fichier de configuration du serveur dhcpd
Mon LAC / SWAN :-: xLayer 2 tunneling protocol Access Concentrator / Secure Wide Area Networks actuel
J'aime bien celle-ci..
Mon concentrateur IPSec/xL2TP « xwan.ipv10.net » et les inter-sites sécurisés - « swan.XXX.ipv10.net »
root@lab3w:~ # host xwan.ipv10.net
xwan.ipv10.net has IPv6 address 2607:5300:60:9389:0:1:0:137
xwan.ipv10.net has IPv6 address 2607:5300:60:9389:0:2:0:137
xwan.ipv10.net has IPv6 address 2607:5300:60:9389:0:3:0:137
root@lab3w:~ #
root@lab3w:~ # host 2607:5300:60:9389:0:1:0:137
7.3.1.0.0.0.0.0.1.0.0.0.0.0.0.0.9.8.3.9.0.6.0.0.0.0.3.5.7.0.6.2.ip6.arpa domain name pointer xwan.ipv10.net.
root@lab3w:~ # host 2607:5300:60:9389:0:2:0:137
7.3.1.0.0.0.0.0.2.0.0.0.0.0.0.0.9.8.3.9.0.6.0.0.0.0.3.5.7.0.6.2.ip6.arpa domain name pointer xwan.ipv10.net.
root@lab3w:~ # host 2607:5300:60:9389:0:3:0:137
7.3.1.0.0.0.0.0.3.0.0.0.0.0.0.0.9.8.3.9.0.6.0.0.0.0.3.5.7.0.6.2.ip6.arpa domain name pointer xwan.ipv10.net.
root@lab3w:~ #
root@lab3w:~ #
root@lab3w:~ # host swan.std.ipv10.net
swan.std.ipv10.net has IPv6 address 2607:5300:60:9389:0:1:0:1
root@lab3w:~ # host 2607:5300:60:9389:0:1:0:1
1.0.0.0.0.0.0.0.1.0.0.0.0.0.0.0.9.8.3.9.0.6.0.0.0.0.3.5.7.0.6.2.ip6.arpa domain name pointer swan.std.ipv10.net.
root@lab3w:~ #
root@lab3w:~ # host swan.nice.ipv10.net
swan.nice.ipv10.net has IPv6 address 2607:5300:60:9389:0:2:0:1
root@lab3w:~ # host 2607:5300:60:9389:0:2:0:1
1.0.0.0.0.0.0.0.2.0.0.0.0.0.0.0.9.8.3.9.0.6.0.0.0.0.3.5.7.0.6.2.ip6.arpa domain name pointer swan.nice.ipv10.net.
root@lab3w:~ #
root@lab3w:~ # host swan.germ.ipv10.net
swan.germ.ipv10.net has IPv6 address 2607:5300:60:9389:0:3:0:1
root@lab3w:~ # host 2607:5300:60:9389:0:3:0:1
1.0.0.0.0.0.0.0.3.0.0.0.0.0.0.0.9.8.3.9.0.6.0.0.0.0.3.5.7.0.6.2.ip6.arpa domain name pointer swan.germ.ipv10.net.
root@lab3w:~ #
Pour le fun :
root@lab3w:~ # host swan.nice.ipv01.net
ipv01.net has DNAME record ipv10.net.
swan.nice.ipv01.net is an alias for sWAn.NIcE.ipv10.net.
sWAn.NIcE.ipv10.net has IPv6 address 2607:5300:60:9389:0:2:0:1
Merci.
Romain.