From c61e0604b506980b6d388e1e8385f28483ec01c5 Mon Sep 17 00:00:00 2001 From: shirenn Date: Tue, 20 Jul 2021 22:19:22 +0200 Subject: [PATCH] [tools] Ajout de radvd.md --- tools/radvd.md | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 tools/radvd.md diff --git a/tools/radvd.md b/tools/radvd.md new file mode 100644 index 0000000..af0da06 --- /dev/null +++ b/tools/radvd.md @@ -0,0 +1,88 @@ +# Radvd + +Radvd est une implementation du mécanisme d'autoconfiguration des adresses IP en +ipv6. Il permet au client de connaitre l'adresse du routeur et de se construire +lui même une adresse à partir du préfixe annoncé par le routeur et de son +adresse MAC. Des extensions du protocoles permettes aussi la configuration des +serveurs dns. + +## Principe + +### Adresse ipv6 et EUI-64 + +Il est possible pour un pair possédant une adresse MAC et un prefixe ipv6 de +taille au plus `/64` de construire une adresse ipv6. Cependant, rien n'assure +qu'elle soit unique à ce stade et il faudra par la suite le vérifier. Mais on ne +s'interesse ici qu'au processus de construction. + +De son adresse MAC (donnée à 48 bits), on dérive un identifiant de l'interface +sur le lien de 64 bits en insertant les 16 bits `FF:FE` au milieu de l'adresse +MAC puis on inverse le 7 ème bit. On peut ensuite suffixer cet identifiant au +préfixe dans lequel on chercher à construire notre addresse ipv6. Ainsi +`00:25:90:69:8c:74` devient `00:25:90:ff:fe:69:8c:74` puis +`02:25:90:ff:fe:69:8c:74` qui donne l'adresse `fd00::10:0225:90ff:fe69:8c74/64` +dans le prefixe `fd00:0:0:10::/64`. + +### Processus d'autoconfiguration complet + +Lorsqu'une machine configure une interface supportant l'ipv6 sur un lien, celle +ci va tenter de se crééer une premier adresse local au lien. Elle est donc +judicieusement appelé ip de lien locale. Pour cela, il va se contruire comme +expliquer précedemment une adresse dans le prefixe `fe80::/64`. Pour s'assurer +qu'elle est effectivement unique, il va envoyer au groupe ipv6 all-node +(`ff02::1`) qui comme son nom l'indique contient tous les nœuds si quelqu'un +utilise déjà l'adresse. Si c'est le cas, il ne poussera pas sa configuration +plus loin. Sinon après un délai sans réponse, il s'assignera l'adresse. Notre +pair a donc maintenant une adresse sur le lien et il peut écouter les annonces +(judicieusement appelé routeur-advertissement ou RA) périodiques qu'envoie le +routeur au groupe all-node. S'il ne désire pas patienté jusqu'à la prochaine +annonce le client peut envoyer un routeur-sollicitation au groupe all-routers. +Dans ces annonces le routeur inclut entre autre le prefixe dans lequel le client +devrait prendre son adresse, son adresse de lien local ainsi que des informations à +propos des serveurs dns. Une fois ces informations récupérées le client peut +procéder aux dernières étape de configuration de son interface réseaux en +assignant l'adresse qu'il a construit à partir du préfixe que lui a fourni le +routeur (en vérifiant en amont son unicité sur le lien) et en configurant la +gateway à l'adresse de lien local du routeur. + +## Installation + +On se contente de tirer le logiciel des repository debian `sudo apt install +radvd`. + +## Configuration + +La page de manuel détaillant les options de configurations de radvd est +consultable en utilisant `man 5 radvd.conf`. + +La configuration du logiciel se fait par bloc d'interface sur lesquel on va +publier nos RA. Dans un bloc on peut ensuite définir + * des options génériques à propos de l'annonce comme par exemple l'intervalle + auquel notre routeur devrait publier des annonces ou le temps que la route + devrait être conservé par le client. + * les prefixes que le routeur va annoncer sur le lien et certaines options + associées + * les options de configurations du DNS + +Par exemple, le bloc suivant configure des annonces sur l'interface ens1 envoyé +toutes les 30 secondes avec comme préfixe `2a0c:700:12::/64`, `adh.crans.org` +comme liste de recherche pour les dns et `2a0c:700:12::ff:fe00:9912` comme +adresse du serveur dns. + +``` +interface ens1 { + AdvSendAdvert on; + AdvDefaultPreference high; + MaxRtrAdvInterval 30; + + prefix 2a0c:700:12::/64 { + AdvRouterAddr on; + }; + + # La zone DNS + DNSSL adh.crans.org {}; + + # Les DNS récursifs + RDNSS 2a0c:700:12::ff:fe00:9912 {}; +}; +```