Pour éditer le wiki, il faut demander un compte à un Lapin !

Difference between revisions of "Ateliers Babel"

From Le L∞p's Wiki
Jump to: navigation, search
(Configuration)
Line 3: Line 3:
 
== Description ==
 
== Description ==
  
Lors de cet atelier, je vais vous présenter '''Babel''' à partir de la distribution GNU/Linux [http://www.debian.org/ '''Debian'''], mais cela devrait être facilement adaptable pour d'autres distributions. Un portage de Babel pour Windows est en cours...  
+
Lors de cet atelier, je vais vous présenter '''Babel''' à partir de la distribution GNU/Linux [http://www.debian.org/ '''Debian'''], mais cela devrait être facilement adaptable pour d'autres distributions. Un portage de Babel pour Windows est en cours... (mais ça commence à faire un moment que je n'en ai pas de nouvelles)
  
 
Pour le moment, Babel n'a pas de système d'authentification (la plupart des protocoles de réseaux maillés, y compris BGP, n'en possèdent pas non plus), mais un russe, Denis Ovsienko, a déjà implémenté un système d'authentification<ref>D. Ovsienko, « [http://tools.ietf.org/html/draft-ovsienko-babel-hmac-authentication-03 Babel HMAC Cryptographic Authentication] »</ref> qui fonctionne pour la version [[wikipedia:fr:Quagga (logiciel)|'''Quagga''']] de Babel.
 
Pour le moment, Babel n'a pas de système d'authentification (la plupart des protocoles de réseaux maillés, y compris BGP, n'en possèdent pas non plus), mais un russe, Denis Ovsienko, a déjà implémenté un système d'authentification<ref>D. Ovsienko, « [http://tools.ietf.org/html/draft-ovsienko-babel-hmac-authentication-03 Babel HMAC Cryptographic Authentication] »</ref> qui fonctionne pour la version [[wikipedia:fr:Quagga (logiciel)|'''Quagga''']] de Babel.
Line 9: Line 9:
 
== Prérequis ==
 
== Prérequis ==
  
Si vous souhaitez participer à l'expérience des réseaux maillés, il est préférable de venir avec votre propre ordinateur préconfiguré. Mais le paquet '''{{deb|babeld}}''' est très léger, donc si vous ne l'avez pas encore installé ni configuré, vous pourrez le faire sur place.
+
Si vous souhaitez participer à l'expérience des réseaux maillés, il est préférable de venir avec votre propre ordinateur préconfiguré. Mais le paquet '''{{deb|babeld}}''' et '''{{deb|ahcpd}}''' sont très légers, donc si vous ne les avez pas encore installés ni configurés, vous pourrez le faire sur place.
  
* {{deb|babeld}} (par exemple avec <code>aptitude install babeld</code>) ;
+
* par exemple avec <code>aptitude install babeld ahcpd</code>) ;
 
* disposer des pilotes réseau pour votre ordinateur.
 
* disposer des pilotes réseau pour votre ordinateur.
 +
* autoriser le forward des paquets.
  
 
=== Configuration ===
 
=== Configuration ===
  
{{fichier|/etc/network/interfaces}} (exemple à adapter en fonction du réseau local) :
+
==== {{fichier|/etc/network/interfaces}} ====
 +
  # (exemple à adapter en fonction du réseau local) :
 
   allow-hotplug eth0
 
   allow-hotplug eth0
 
   iface eth0 inet dhcp
 
   iface eth0 inet dhcp
 
     post-up invoke-rc.d babeld restart
 
     post-up invoke-rc.d babeld restart
 
     post-up invoke-rc.d ahcpd restart
 
     post-up invoke-rc.d ahcpd restart
 +
 
 +
  # les lignes suivantes sont commentées et représentent une configuration alternative
 +
  #  allow-hotplug eth0
 +
  #    iface eth0 inet manual
 +
  #    post-up invoke-rc.d babeld restart
 +
  #    post-up invoke-rc.d ahcpd restart
 
    
 
    
 
   auto wlan0
 
   auto wlan0
   iface wlan0 inet static
+
   iface wlan0 inet manual
   address 192.168.0.x
+
   # les lignes suivantes sont commentées parce qu'on obtient une addresse avec ahcpd
   netmask 255.255.255.0
+
  # par contre un server ahcpd DOIT avoir une adresse ip (il ne se donne pas une IP pour lui même)
   network 192.168.0.0
+
  #  address 192.168.100.x
     wireless-essid -babel-
+
   netmask 255.255.255.255
 +
   network 192.168.100.0
 +
     wireless-essid babel-mesh
 
     wireless-channel 6
 
     wireless-channel 6
 
     wireless-mode ad-hoc
 
     wireless-mode ad-hoc
 
     wireless-rts 512
 
     wireless-rts 512
    wireless-ap ca:fe:ca:fe:ca:fe
+
  # la ligne suivante n'est pas strictement nécéssaire elle peut être commentée
 +
  #    wireless-ap ca:fe:ca:fe:ca:fe  
 
     post-up invoke-rc.d babeld restart
 
     post-up invoke-rc.d babeld restart
 
     post-up invoke-rc.d ahcpd restart
 
     post-up invoke-rc.d ahcpd restart
  
{{fichier|/etc/babeld.conf}} :
+
==== {{fichier|/etc/babeld.conf}} : ====
 
   redistribute proto 3 ip 0.0.0.0/0 eq 0 metric 128
 
   redistribute proto 3 ip 0.0.0.0/0 eq 0 metric 128
  
{{fichier|/etc/default/babeld}} :
+
==== {{fichier|/etc/default/babeld}} : ====
   # Liste des interfaces réseau sur lesquelles le protocole devrait fonctionner.
+
   # Liste des interfaces réseau sur lesquelles le protocole babel devrait fonctionner.
 
   INTERFACES="eth0 wlan0"
 
   INTERFACES="eth0 wlan0"
  
Pour la configuration du wifi, certains drivers ne supportent pas la façon dont j'ai écrit les lignes commençant par wirelees-... (une solution consiste à utiliser les directives pre-up suivies de commandes comme 'iwconfig'), je n'ai pas de solution miracle pour le moment.
+
==== {{fichier|/etc/default/ahcpd}} : ====
 +
  # Liste des interfaces réseau sur lesquelles le protocole ahcp devrait fonctionner.
 +
  INTERFACES="eth0 wlan0"
 +
 
 +
 
 +
Pour la configuration du wifi, certains drivers ne supportent pas la façon dont j'ai écrit les lignes commençant par '''wireless-...''' (une solution consiste à utiliser les directives pre-up suivies de commandes comme 'iwconfig'), je n'ai pas de solution miracle pour le moment.
  
 
le partage de la route par defaut se fait avec "ip 0.0.0.0/0 eq 0" tandis que "proto 3" est là pour indiquer que la route par defaut sera obtenue à partir de dhcp.
 
le partage de la route par defaut se fait avec "ip 0.0.0.0/0 eq 0" tandis que "proto 3" est là pour indiquer que la route par defaut sera obtenue à partir de dhcp.
  
== Quand ==
+
Pour faire un server ahcpd (pour donner une addresse IP aux nœud):
 +
(Sous debian, il faut créer ce fichier)
  
; Date : mercredi 30 janvier 2013 à 20 h 30
+
==== {{fichier|/etc/ahcpd/ahcpd.conf}} : ====
; Durée envisagée : 30 minutes
+
  mode server
; Animation : [[User:Err404|Err404]]
+
 
 +
  prefix fde6:20f5:c9ac:358::/64
 +
  prefix 192.168.100.128/25
 +
  lease-dir /var/lib/leases
 +
  #    name-server fde6:20f5:c9ac:358::1
 +
  # ici j'indique 127.0.0.1 pour ceux qui utilisent dbndns (fork de djbdns) et dnscache-run
 +
  # pour les autres, je ne sais pas comment reprendre le dns fourni par exemple par dhcp
 +
      name-server 127.0.0.1
 +
  # ahcpd fonctionne mieux avec un serveur ntp, mais si vous n'en disposez pas, ce n'est pas fatal
 +
  #    ntp-server 192.168.2.4
  
== Inscriptions ==
+
Ensuite il faut lancer ahcpd avec le fichier ahcpd comme paramètre (je ne sais pas encore le faire de façon automatique au boot sous Debian, il faudrai voir du coté de /etc/init.d/ahcpd), c'est pourquoi je le lance à la main.
  
Intéressé ? Note ton nom ici :
+
  ahcpd -D -c /etc/ahcp/ahcpd.conf eth0 wlan0
 +
 
 +
* -D pour le lancer en daemon, on peut remplacer -D par -d2 pour passer en mode debug
 +
* -c pour indiquer le fichier de configuration
 +
* eth0 et wlan0 sont les interfaces sur lesquelles ahcpd sera à l'écoute.
 +
 
 +
==== NAT avec iptables ====
 +
pour finir je rajoute une règle iptables pour faire du NAT (il existe d'autres solution plus élegantes, mais celle çi c'est pour le cas ou vous n'avez pas le contrôle sur le routeur qui vous donne l'accès à Internet)
 +
 
 +
Cela vous permetra de router vos paquets entre le réseau local et le sous réseau obtenu avec babel (oui, c'est un sous réseau on comprend plus de choses quand on sait ça, entre autre ce sont les adresses MAC qui sont importantes, beaucoup plus que les adresses IP)
 +
 
 +
  iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j MASQUERADE
 +
 
 +
== Quand ==
 +
 
 +
; Date :  
 +
; Durée envisagée :
 +
; Animation : [[User:Err404|Err404]]
  
 
== Notes et références ==
 
== Notes et références ==

Revision as of 10:09, 7 July 2013

L'objectif de cet atelier est de partager les connaissances sur le protocole Babel afin de permettre à un maximum de personnes d'installer des nœuds Babel et de lancer une expérimentation de grande taille.

Description

Lors de cet atelier, je vais vous présenter Babel à partir de la distribution GNU/Linux Debian, mais cela devrait être facilement adaptable pour d'autres distributions. Un portage de Babel pour Windows est en cours... (mais ça commence à faire un moment que je n'en ai pas de nouvelles)

Pour le moment, Babel n'a pas de système d'authentification (la plupart des protocoles de réseaux maillés, y compris BGP, n'en possèdent pas non plus), mais un russe, Denis Ovsienko, a déjà implémenté un système d'authentification[1] qui fonctionne pour la version Quagga de Babel.

Prérequis

Si vous souhaitez participer à l'expérience des réseaux maillés, il est préférable de venir avec votre propre ordinateur préconfiguré. Mais le paquet babeld et ahcpd sont très légers, donc si vous ne les avez pas encore installés ni configurés, vous pourrez le faire sur place.

  • par exemple avec aptitude install babeld ahcpd) ;
  • disposer des pilotes réseau pour votre ordinateur.
  • autoriser le forward des paquets.

Configuration

/etc/network/interfaces

 # (exemple à adapter en fonction du réseau local) :
 allow-hotplug eth0
 iface eth0 inet dhcp
   post-up invoke-rc.d babeld restart
   post-up invoke-rc.d ahcpd restart
 
 # les lignes suivantes sont commentées et représentent une configuration alternative
 #  allow-hotplug eth0
 #    iface eth0 inet manual
 #    post-up invoke-rc.d babeld restart
 #    post-up invoke-rc.d ahcpd restart
 
 auto wlan0
 iface wlan0 inet manual
 # les lignes suivantes sont commentées parce qu'on obtient une addresse avec ahcpd
 # par contre un server ahcpd DOIT avoir une adresse ip (il ne se donne pas une IP pour lui même)
 #  address 192.168.100.x
 #  netmask 255.255.255.255
 #  network 192.168.100.0
   wireless-essid babel-mesh
   wireless-channel 6
   wireless-mode ad-hoc
   wireless-rts 512
 # la ligne suivante n'est pas strictement nécéssaire elle peut être commentée
 #    wireless-ap ca:fe:ca:fe:ca:fe 
   post-up invoke-rc.d babeld restart
   post-up invoke-rc.d ahcpd restart

/etc/babeld.conf :

 redistribute proto 3 ip 0.0.0.0/0 eq 0 metric 128

/etc/default/babeld :

 # Liste des interfaces réseau sur lesquelles le protocole babel devrait fonctionner.
 INTERFACES="eth0 wlan0"

/etc/default/ahcpd :

 # Liste des interfaces réseau sur lesquelles le protocole ahcp devrait fonctionner.
 INTERFACES="eth0 wlan0"


Pour la configuration du wifi, certains drivers ne supportent pas la façon dont j'ai écrit les lignes commençant par wireless-... (une solution consiste à utiliser les directives pre-up suivies de commandes comme 'iwconfig'), je n'ai pas de solution miracle pour le moment.

le partage de la route par defaut se fait avec "ip 0.0.0.0/0 eq 0" tandis que "proto 3" est là pour indiquer que la route par defaut sera obtenue à partir de dhcp.

Pour faire un server ahcpd (pour donner une addresse IP aux nœud): (Sous debian, il faut créer ce fichier)

/etc/ahcpd/ahcpd.conf :

 mode server
 
 prefix fde6:20f5:c9ac:358::/64
 prefix 192.168.100.128/25
 lease-dir /var/lib/leases
 #    name-server fde6:20f5:c9ac:358::1
 # ici j'indique 127.0.0.1 pour ceux qui utilisent dbndns (fork de djbdns) et dnscache-run
 # pour les autres, je ne sais pas comment reprendre le dns fourni par exemple par dhcp
     name-server 127.0.0.1
 # ahcpd fonctionne mieux avec un serveur ntp, mais si vous n'en disposez pas, ce n'est pas fatal
 #    ntp-server 192.168.2.4

Ensuite il faut lancer ahcpd avec le fichier ahcpd comme paramètre (je ne sais pas encore le faire de façon automatique au boot sous Debian, il faudrai voir du coté de /etc/init.d/ahcpd), c'est pourquoi je le lance à la main.

 ahcpd -D -c /etc/ahcp/ahcpd.conf eth0 wlan0
  • -D pour le lancer en daemon, on peut remplacer -D par -d2 pour passer en mode debug
  • -c pour indiquer le fichier de configuration
  • eth0 et wlan0 sont les interfaces sur lesquelles ahcpd sera à l'écoute.

NAT avec iptables

pour finir je rajoute une règle iptables pour faire du NAT (il existe d'autres solution plus élegantes, mais celle çi c'est pour le cas ou vous n'avez pas le contrôle sur le routeur qui vous donne l'accès à Internet)

Cela vous permetra de router vos paquets entre le réseau local et le sous réseau obtenu avec babel (oui, c'est un sous réseau on comprend plus de choses quand on sait ça, entre autre ce sont les adresses MAC qui sont importantes, beaucoup plus que les adresses IP)

 iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j MASQUERADE

Quand

Date 
Durée envisagée 
Animation 
Err404

Notes et références

  1. D. Ovsienko, « Babel HMAC Cryptographic Authentication »

Voir aussi