documentation/services/networking/radvd.md

92 lines
3.9 KiB
Markdown

# 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.
```txt
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 {};
};
```