**Ceci est une ancienne révision du document !**
DN42
DN42 est un réseau overlay, dans lequel on utilise les mêmes protocoles que sur Internet (routage inter-AS réalisé avec BGP, DNS, whois, etc).
Les numéro d'AS ainsi que les adresses alloués au sein du réseau sont privés (DN42 utilise 172.22.0.0/15 en IPv4, des ULA en IPv6).
C'est un moyen simple de se faire la main pour faire tourner du BGP en pratique. Pour participer, il suffit de (source ) :
- s'attribuer un ASN et une plage d'adresse ;
- établir des tunnels (IPsec, GRE, OpenVPN, Tinc, …) avec des participants existants ;
- monter des sessions BGP avec ses voisins et annoncer son préfixe.
Documentation officielle
Le wiki a pas mal d'informations. Il y a notamment un guide Getting started.
Une copie de l'ancien wiki est disponible. Attention : la plupart des informations concernant DN42 ne sont plus d'actualité. Par contre, tous les détails techniques concernant les tunnels ou BGP (Quagga, OpenBGPd, etc) sont encore utiles.
DN42 et FFDN
Intérêt pour FFDN
* Apprendre à faire du routage (BGP, peering) sans risque * (S'échanger des services en interne)
Idées de projets pour FFDN
* Simplement faire du peering entre FAI de la fédé * Faire tourner un point d'échange (avec route server) * Avoir quelqu'un qui s'occupe de tenir à jour le registre (ASN, ranges, DNS, etc) pour toute la fédé
Liste de diffusion
La fédération a une liste de diffusion dédiée à dn42 : https://lists.ffdn.org/wws/info/dn42
Point d'échange virtuel
Nous avons un point d'échange virtuel avec un Route Server BGP, ouvert à toute personne liée à la fédération possédant un ASN et un range sur dn42. L'intérêt est le même que pour un vrai point d'échange : les routeurs des participants se connectent au switch, établissent une session BGP avec le Route Server, et utilisent le switch pour forwarder directement le traffic au bon peer.
Note : pour échanger des routes sur le point d'échange, il est nécessaire d'avoir un numéro d'AS et un préfixe réseau sur dn42. Il faut évidemment aussi avoir un routeur BGP (Quagga, Bird…).
Le switch virtuel est construit grâce à tinc en mode switch, et opère dans le subnet 172.22.250.0/25
.
Le Route Server est en 172.22.250.1
, AS 76142.
Participants
Noeud Tinc | Adresse | Admin | Commentaire |
---|---|---|---|
tower | 172.22.250.1 | zorun | Route Server |
mejis | 172.22.250.2 | zorun | |
beta | 172.22.250.3 | petrus |
Se connecter au switch
Pour cela, vous avez besoin de Tinc. Configuration pour le point d'échange de la fédé :
mkdir -p /etc/tinc/ix-ffdn/hosts
Dans /etc/tinc/ix-ffdn/tinc.conf
:
Name = <nom de votre noeud tinc> # Nom de l'interface tinc, facultatif #Interface = tap-ffdn # Pour faire le vpn en layer2 (tap) pour permettre IPv6 *et* IPv4 Mode = switch # Accessible en IPv6 seulement ConnectTo = tower # Au cas où pas d'IPv6 pour joindre tower ConnectTo = mejis
Création de la paire de clés
tinc -n ix-ffdn -K
Il faut envoyer la clé publique ainsi générée (/etc/tinc/ix-ffdn/hosts/<nom de votre noeud tinc>
) à la liste de diffusion, pour qu'elle soit rajoutée sur les routeurs (au moins sur la machine qui sert de Route Server).
Ajout de la clé publique du Router Server
Cette clé publique est à mettre dans /etc/tinc/ix-ffdn/hosts/tower
:
Compression = 10 Address = tower.polyno.me -----BEGIN RSA PUBLIC KEY----- MIIBCgKCAQEAugI9ruG970MsIuKV4Cn0H5ni77GUmwFckaATBh2QrP3wytPs8+su yPQS8weI6U+sJoU9HmicJJiJ1qHgDPH36nqkBirqbmOSPBWaA632wXIuu0yQO9v0 9vpw4x8ZxceDX0u1Ww3UjN4n0AI+cpQkZuG/Xx4UGRhzpvol2cOmM0Z8L1fvsDQS dtIjjRzcvYbYMJeOQgtJxlNBQrPLkRqIaOskCqaRG6Ya77fkfiGUlxP5K00b5lrl vZyPfcGyCoDAwpJXy7N+WIvsGrsgLvbfqqBAAdmLhGoXuQnttML8fScmt2Kyq3CA XBmj3KrNd9KxWjXzBHw6f1XZAXaKfs191wIDAQAB -----END RSA PUBLIC KEY-----
Note : ce noeud n'est joignable qu'en IPv6. Si vous n'avez pas d'IPv6, mettez également la clé publique de mejis dans /etc/tinc/ix-ffdn/hosts/mejis
:
Compression = 10 Address = mejis.polyno.me -----BEGIN RSA PUBLIC KEY----- MIIBCgKCAQEAs/9VCDc79LFhR1DxPf+F+beZT/YK2jZ6kDvlkO3FjPS3V3rV9ofi RUYBDRwC/juUS9jIucNRC+wEBHQoUh3OVzLTMFOjE0fLXoXhc9R+hVULIGFaTIvk ZFNTV2cgoMdxjAjur9Z0v9xQQd85GXNifN1ORV1KBw5zfRxo3INdIUs3jNbu4oYh /yzOOyS7sykuQs3JcubD/PZSMKu5DCfFQod7RH45HD/kZaaW70C3B/5Jk+qQkZLx OYO/P1oa8WhZLwgzbv1YV92miw7lB21uBaYfaYYoPUOhgQwCun2jPmcIw2Jv7R3C y37rQXoXBDRAF9UbYpJHspzwWAJzKZsICQIDAQAB -----END RSA PUBLIC KEY-----
Attribution d'une adresse
Choisir une adresse dans 172.22.250.0/25
(remplir le tableau plus haut sur cette page). Configurer le script tinc-up pour attribuer l'adresse lorsque le tunnel démarre, /etc/tinc/ix-ffdn/tinc-up
:
ifconfig $INTERFACE up 172.22.250.X/25
Ne pas oublier de rendre le script exécutable.
Démarrage automatique
Sous Debian, mettre ix-ffdn
dans /etc/tinc/nets.boot
.
Sous FreeBSD, rajoute tincdenable=“YES”
dans et
tincdcfg=“ix-ffdn”/etc/rc.conf
.
Test de connectivité
Si tout va bien, une fois Tinc lancé, vous devriez pouvoir pinger 172.22.250.1
.
Configuration BGP
Configurez votre daemon BGP favori (Quagga, Bird, OpenBGPD) pour établir une session BGP avec le Route Server :
* endpoint : ''172.22.250.1'' * ASN : ''76142''
Envoyez ensuite un mail sur la mailing list, avec votre endpoint dans 172.22.250.0/25
ainsi que votre numéro d'AS, pour que la session BGP soit montée sur le Route Server.
Attention, le Route Server ne filtre aucune route annoncée. À vous de vous assurer que vous filtrez les routes que vous ne voulez pas.
Références
Configuration du Route Server
Le Route Server est actuellement un Bird sous FreeBSD, avec une configuration très basique (pas de filtrage).
# Bird configuration for a simple dn42 Route Server. No filtering of any kind. # Adapted from https://gitlab.labs.nic.cz/labs/bird/wikis/Simple_route_server log "/var/log/bird.log" all; log syslog all; router id 172.22.250.1; define myas = 76142; protocol device { } # Protocol template template bgp PEERS { local as myas; import all; export all; route limit 10000; rs client; } # Peers protocol bgp PEER1 from PEERS { description "Peer1 peering"; neighbor 172.22.250.2 as XXXXX; } protocol bgp PEER2 from PEERS { description "Peer2 peering"; neighbor 172.22.250.3 as XXXXX; }