89 lines
3.9 KiB
Markdown
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 {};
|
|
};
|
|
```
|