travaux:dn42

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
travaux:dn42 [2013/07/28 22:25]
zorun créée
travaux:dn42 [2015/05/08 19:35] (Version actuelle)
alarig [Participants]
Ligne 3: Ligne 3:
 [[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). [[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).+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 : +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]] 
- +) : 
-    * demander un ASN et une plage d'adresse ;+    * s'attribuer un ASN et une plage d'adresse ;
     * établir des tunnels (IPsec, GRE, OpenVPN, Tinc, ...) avec des participants existants ;     * établir des tunnels (IPsec, GRE, OpenVPN, Tinc, ...) avec des participants existants ;
     * monter des sessions BGP avec ses voisins et annoncer son préfixe.     * 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é :
 +
 +<code>
 +mkdir -p /etc/tinc/ix-ffdn/hosts
 +</code>
 +
 +Dans ''/etc/tinc/ix-ffdn/tinc.conf'' :
 +
 +<file>
 +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
 +
 +# 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
 +
 +</file>
 +
 +=== Création de la paire de clés ===
 +
 +<code>
 +tincd -n ix-ffdn -K
 +</code>
 +
 +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 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/<nom du noeud>'' Les clés publiques sont les suivantes :
 +
 +== tower ==
 +
 +<file>
 +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-----
 +</file>
 +
 +== polaris ==
 +
 +<file>
 +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-----
 +</file>
 +
 +== knu ==
 +
 +<file>
 +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-----
 +</file>
 +
 +== mejis ==
 +
 +<file>
 +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-----
 +</file>
 +
 +== beta ==
 +
 +<file>
 +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
 +</file>
 +
 +== henry ==
 +
 +<file>
 +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-----
 +</file>
 +
 +== guinch ==
 +<file>
 +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-----
 +</file>
 +=== 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'' :
 +
 +<file>
 +ifconfig $INTERFACE up 172.22.250.X/25
 +</file>
 +
 +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).
 +
 +<file>
 +# 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;
 +}
 +</file>
  • travaux/dn42.1375043151.txt.gz
  • Dernière modification: 2013/07/28 22:25
  • de zorun