documentation/critical/networking/radvd.md

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