====== DN42 ====== [[http://dn42.net|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 ([[https://dn42.net/howto/Getting-started|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 [[https://dn42.net|wiki]] a pas mal d'informations. Il y a notamment un guide [[https://dn42.net/howto/Getting-started|Getting started]]. Une [[http://dn42.volcanis.me/initenv.1.html|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 ===== ==== Liste de diffusion et canal IRC ==== La fédération a une liste de diffusion dédiée à dn42 : https://lists.ffdn.org/wws/info/dn42 Il y a également un canal IRC, ''#ffdn-dn42'' sur geeknode. ==== Intérêt pour FFDN ==== * Apprendre à faire du routage (BGP, peering) sans risque * (S'échanger des services en interne) * S'amuser :) ==== 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) //→ en place, voir ci-dessous// * Avoir quelqu'un qui s'occupe de tenir à jour le registre (ASN, ranges, DNS, etc) pour toute la fédé ===== 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''. Les Route Servers BGP sont ''172.22.250.1'' et ''172.22.250.2'', AS 76142. ==== Participants ==== ^ Noeud Tinc ^ Adresse ^ Admin ^ AS ^ Commentaire ^ | tower | 172.22.250.1 | zorun, petrus | 76142 | Route Server 1 | | polaris | 172.22.250.2 | petrus | 76142 | Route Server 2 | | beta | 172.22.250.3 | petrus | 64751 | | | bzh | 172.22.250.4 | petrus | 64708 | Breizh-Entropy, chez ttnn.net | | mirsal | 172.22.250.5 | mirsal | 76186 | | | cajou | 172.22.250.6 | djanos | 64644 | | | knu | 172.22.250.7 | karchnu | 76141 | | | mejis | 172.22.250.8 | zorun | 4242420184 | chez ttnn.net | | ryuk | 172.22.250.9 | kankan | 64742 | ADSL/câble, pas trop stable | | haruhi | 172.22.250.10 | kankan | 64742 | chez OVH | | taupo | 172.22.250.11 | taziden | 4242421919 | | | octarine | 172.22.250.12 | zorun | 4242420184 | chez poney | | Atlas | 172.22.250.13 | atlas | 4242421337 | | | mandelkind | 172.22.250.14 | mandelkind | 4242420012 | | | ironman | 172.22.250.15 | dlgg | 4242420369 | | | heimdall | 172.22.250.16 | dlgg, kankan, nicoo | 4242422121 | LeLoop | | henry | 172.22.250.17 | kouak | 4242420036 | | | twilight_sparkle | 172.22.250.18 | Bawaaaaah | 4242422434 | OVH | | scrown | 172.22.250.19 | scrown | 4242423249 | | | polokov | 172.22.250.20 | CAFAI | 4242421664 | Ikoula | | jarvis | 172.22.250.21 | wipton | 4242421999 | adsl | | guinch | 172.22.250.22 | alarig | 4242423522 | chez TTNN | ==== 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 l'interface tinc, facultatif #Interface = tap-ffdn # Pour faire le vpn en layer2 (tap) pour permettre IPv6 *et* IPv4 Mode = switch # Il faut établir des méta-connexions avec plusieurs autres noeuds Tinc ConnectTo = tower ConnectTo = polaris ConnectTo = beta ConnectTo = mejis # Si on utilise Tinc 1.1, cette option augmente la redondance des méta-connexions, cf. tinc.conf(5) #AutoConnect = yes # Si on utilise Tinc 1.1 ExperimentalProtocol = no === Création de la paire de clés === tincd -n ix-ffdn -K Il faut envoyer la clé publique ainsi générée (''/etc/tinc/ix-ffdn/hosts/'') à la liste de diffusion, pour qu'elle soit rajoutée sur les routeurs (au moins sur les machines qui servent de Route Server). === Ajout des clés publiques des autres noeuds Tinc === Pour chaque noeud Tinc indiqué dans une directive ConnectTo (''tower'', ''polaris'', ''mejis'', ''beta''), il faut installer la clé publique correspondant dans ''/etc/tinc/ix-ffdn/hosts/''. Les clés publiques sont les suivantes : == 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----- == polaris == Address = polaris.poum.tk -----BEGIN RSA PUBLIC KEY----- MIICCgKCAgEA5XwLzepsX7pgj+ymhrDqYA9VqVaZMMK+3Mi9SY27TxcUZWBI2Cnm qvYnzPAsPVuD7sjS8uAX7nHQhKZSaSEHQHw97v+BOqGBOuzm0Z2w+xDn4+5C2Z1G KvTAAqMPbDGvgJ7x0wY9QdGtoaovmcbMMXPYoc9po3g+3w5XlLydUjf9iCAmfzG6 2vuLsSJ/5Lf7+/ANte7uxb9tBIuuFtsyKm14g7MNhYQdCar76pl0rqugu2qMtkHu q8GH1pQ3vyK4qPQe3MAPrABZVACYhnPB01Ph1rXRFnwfWeRGL4F212mnY+kOBofZ WQ4K3wtCvRNpoGGK6fLB8G6mnMhdq0YEVuA5wHKR1b/FkAepQIPa3gPrva2nRFvW sbP+9RjN/rkJpzLan87QF28koZMdm3dmVyKtwUK3TNMIxKYfKxOem9FRdfGZGgX+ X9Ny/N68rPZGdUs7OGsC+9nYp10F+X6S35HBxZ+40wzelYHcZ4vccTKG4KvsTVGA qVlDpH+qhVcR4Bj3Mu3tliiwFjtx4yOZZl3NZLQGXKvLRjemMsa8g0PggvMm2/kM ZqOz7ZhNMvvMzLWVzqp4cUxDmK2PCm5/T61IOCCYElh3u9LV9JEKwXBj4wZPkUtH T9o590HaJ3Dw1Wg4Z3wxS3z8IgaErztO83yLrS0nRyI+W9NQYGE7OTsCAwEAAQ== -----END RSA PUBLIC KEY----- == knu == Compression = 10 Address = karchnu.fr -----BEGIN RSA PUBLIC KEY----- MIIBCgKCAQEAoSrngJJ2Vn8ptP9CGlo3149oyPD+Q263tDj40foESQNoWcuaGnoE i/7S+PSwdLiK4GUtV84M1rCuRAwZnQMpFeTJCywI84/IYqZUw9kvN/lWd+0Dc72a 77c9F3m2YWtzNQA2O+vaMTi1ahITjY7TWldH9GxMCnHRjSF1ZD+x91mJtmpkaMH/ 96+fNiNJUo6+1N7BIHW/4C4Sy3aWzpOhXt2IzJC4Ke58a398HDUBfY8pGVp6NCKm nhURUmN8+UaSfcySwc2nVCpK9wg2nkgH1JDPohnbj45zxCidiocYb02fvvhovYgw oJXgWyFcztZy5mnzxpApr0VU6mMYlRVgaQIDAQAB -----END RSA PUBLIC KEY----- == 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----- == beta == Address = beta.poum.tk Port = 656 -----BEGIN RSA PUBLIC KEY----- MIIBCgKCAQEAyXcBf1EiDocB9u8lNY/vaXPAGoRkALlf50hJrmujeRSby+AwcaxU 9ZmDwYmXUNhTLFYpI+zLTfu9CDlJ/dOPmIC8MF1WnrYzLKXLed79sGLgWMZNLch3 XEoM8dwX1VHOFcYY0LG2elJ0tPIv3/ANtEzI9Aj/zK0GLT2ajHiADEYQq/VRHS3+ ZrbFrZ8y1HeSnsZ08R2wEWzJOMblBi85p1CrlzSevH1oCBPwMH8xGI1oZUK9Udn5 IfGrVLyTPZrTukDEYCPac2KvY8kVW0JycfgWriyrMObEfrubuEnV5mOvZbYhHXzS zPMuqIzAXWwPae4kJo39wVK50mlpIud+hQIDAQAB -----END RSA PUBLIC KEY----- ECDSAPublicKey = DAAFJhWlLmpGY9PdXf6zpcGShZFuCqtfeo0iPaCyjaKiqtjBJYxa7aoWKGPb/ztjERXJX/X+6jiR+CQEwov4UglaPB == henry == Address = henry.kouak.org -----BEGIN RSA PUBLIC KEY----- MIIBCgKCAQEAvsDVrn8ABSkoEkHInNKjZuI0RNnr/T2OzPOpix7HIL1zyKx7j7PW wNf1zqCtICbUneK2SBOY9eiLH0aUp12OQfE1W7LXAUAfk5yeCK5VKbvSb2O4uNZE 57z5dE8N7FbX+w5p5DTZtqSg64HGpJvjU6+RuoRkBjQrbqiArf8S0OPWpfmPO84N lHmCZ/z6Z489KLPHS4IHl54Gmg7KA1uTo0S5sijyKM0gGfhgNpRxz4jISXiA0q6a 5YOEJ34r04p6pKQdmbmtbheWJz62qRwr4oHvi8/aMU29jHMRH7WjpB08mEW/mRuP qHS7by7dcRXyzKCGo/pYZ4k0lUP8rg6V4QIDAQAB -----END RSA PUBLIC KEY----- == guinch == Address = guinch.swordarmor.fr -----BEGIN RSA PUBLIC KEY----- MIIBCgKCAQEApjlfRyIHfNOyokykTLVbp32lYwpoOh0dqVDC0/PymkVACbGthe6D jhCj0FZYZNONooRAWDIZg8Bt+82fGTJdCZRlpaIK0PyHOki5cRuXyUpJBzV7MTmJ lJcfxuwOp2yCL6ffwoWpbFJM+oUad4TLxbftfg2q5S3y1yx84gPV5FF65dkVIYEU BTo96b2ELMC7jQfyuqqZZdKMicGsMBumZt78Ol+1eeGUfWF8LTcy1jthpH1nUV3M kNIzefU8rQ/B5MqWfjpOiUVbF3XeTMi97X9s5gZIRXVNn6dIdwq1Yn/3Ov8GS29d nAkEfHwyMxs4FlPbUpCf7xLCb/z7geR8SQIDAQAB -----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 ''tincd_enable="YES"'' et ''tincd_cfg="ix-ffdn"'' dans ''/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 deux sessions BGP, une avec chaque Route Server : * endpoints : ''172.22.250.1'' et ''172.22.250.2'' * 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 et votre nom de nœud Tinc, pour que la session BGP soit montée sur les Route Servers. Attention, les Route Servers ne filtrent aucune route annoncée. À vous de vous assurer que vous filtrez, en entrée, 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; # We could apply a filter here, to only accept routes that belong to dn42. #import filter bgp_dn42; } # 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; }