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
m (Prérequis: mise en forme, syntaxe)
m (mise en forme, syntaxe)
Line 16: Line 16:
 
* avoir l'IPv6 activé.
 
* avoir l'IPv6 activé.
  
=== Configuration pour GNU/Linux Debian===
+
=== Configuration pour Debian GNU/Linux ===
  
 
On va imaginer ici que vous avez un routeur dans votre réseau local qui fournit une adresse IP et une route par défaut, et que vous êtes connecté par un câble Ethernet à ce routeur qui vous donne l'accès à Internet (ce routeur va donc indiquer une route par défaut que vous aller redistribuer au sous-réseau Babel).
 
On va imaginer ici que vous avez un routeur dans votre réseau local qui fournit une adresse IP et une route par défaut, et que vous êtes connecté par un câble Ethernet à ce routeur qui vous donne l'accès à Internet (ce routeur va donc indiquer une route par défaut que vous aller redistribuer au sous-réseau Babel).
Line 54: Line 54:
  
  
==== {{fichier|/etc/babeld.conf}} (pour Debian)====
+
==== {{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
Line 60: Line 60:
 
Le partage de la route par défaut se fait avec <code>ip 0.0.0.0/0 eq 0</code>, tandis que <code>proto 3</code> est là pour indiquer que la route par défaut sera obtenue à partir de DHCP.
 
Le partage de la route par défaut se fait avec <code>ip 0.0.0.0/0 eq 0</code>, tandis que <code>proto 3</code> est là pour indiquer que la route par défaut sera obtenue à partir de DHCP.
  
==== {{fichier|/etc/default/babeld}} (pour Debian)====
+
==== {{fichier|/etc/default/babeld}} ====
  
 
  # Liste des interfaces réseau sur lesquelles le protocole Babel devrait fonctionner :
 
  # Liste des interfaces réseau sur lesquelles le protocole Babel devrait fonctionner :
 
  INTERFACES="eth0 wlan0"
 
  INTERFACES="eth0 wlan0"
  
==== {{fichier|/etc/default/ahcpd}} (pour Debian)====
+
==== {{fichier|/etc/default/ahcpd}} ====
  
 
  # Liste des interfaces réseau sur lesquelles le protocole AHCP devrait fonctionner :
 
  # Liste des interfaces réseau sur lesquelles le protocole AHCP devrait fonctionner :
Line 95: Line 95:
  
  
=== Configuration pour Openwrt===
+
=== Configuration pour OpenWrt===
  
 
on va imaginer ici que vous avez un routeur dans votre réseau local qui fournit une adresse ip et une route par defaut, et que vous êtes connecté par le câble réseau à ce routeur qui vous donne l'accès à Internet (ce routeur va donc indiquer une route par defaut que vous aller redistribuer au sous-réseau Babel).
 
on va imaginer ici que vous avez un routeur dans votre réseau local qui fournit une adresse ip et une route par defaut, et que vous êtes connecté par le câble réseau à ce routeur qui vous donne l'accès à Internet (ce routeur va donc indiquer une route par defaut que vous aller redistribuer au sous-réseau Babel).
Line 148: Line 148:
  
 
==== {{fichier|/etc/config/babeld}} ====
 
==== {{fichier|/etc/config/babeld}} ====
(quelques lignes inchangées au début du fichier)
+
 
 +
Quelques lignes inchangées au début du fichier :
 
 
 
  config interface wlan
 
  config interface wlan
Line 188: Line 189:
  
 
==== {{fichier|/etc/config/ahcpd}} ====
 
==== {{fichier|/etc/config/ahcpd}} ====
(quelques lignes inchangées au début du fichier)
+
 
 +
Quelques lignes inchangées au début du fichier :
  
 
  package ahcpd
 
  package ahcpd
Line 223: Line 225:
  
  
=== NAT avec iptables {{fichier|/etc/rc.local}} (Debian et Openwrt)===
+
=== NAT avec iptables {{fichier|/etc/rc.local}} (Debian et OpenWrt) ===
  
Pour, finir je rajoute une règle iptables pour faire du NAT. Il existe d'autres solutions plus élégantes, mais celle-ci s'applique au cas où vous n'avez pas le contrôle sur le routeur qui vous donne l'accès à Internet.
+
Pour, finir je rajoute une règle iptables pour faire de la NAT. Il existe d'autres solutions plus élégantes, mais celle-ci s'applique au cas où vous n'avez pas le contrôle sur le routeur qui vous donne l'accès à Internet.
  
 
Cela vous permettra 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 autres que ce sont les adresses MAC qui sont importantes, beaucoup plus que les adresses IP).
 
Cela vous permettra 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 autres que ce sont les adresses MAC qui sont importantes, beaucoup plus que les adresses IP).
Line 231: Line 233:
 
  iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE
 
  iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE
  
=== Mais pourquoi ça fonctionne pas? ===
+
=== Mais pourquoi ça fonctionne pas ? ===
  
vérifier:
+
Vérifiez :
* que babeld et ahcpd sont lancés (avec la commande pidof babeld et pidof ahcpd)
+
* que {{deb|babeld}} et {{deb|ahcpd}} sont lancés (avec la commande <code style="color: green;">pidof babeld</code> et <code style="color: green;">pidof ahcpd</code>) ;
* que vous avez de l'iv6
+
* que vous avez de l'IPv6 ;
* que les firewall fait du nat (avec la commande iptales -t nat -L)
+
* que le pare-feu autorise la NAT (avec la commande <code  style="color: green;">iptables -t nat -L</code>) ;
* que le firewall accepte le forward
+
* que le pare-feu accepte le transfert de port.
  
 
== Quand ==
 
== Quand ==
Line 250: Line 252:
 
== Notes et références ==
 
== Notes et références ==
  
<references/>
+
<references />
  
 
== Voir aussi ==
 
== Voir aussi ==

Revision as of 11:20, 7 November 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 des distributions GNU/Linux Debian et OpenWrt, mais cela devrait être facilement adaptable pour d'autres distributions.

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é. Les paquets 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, sous Debian avec aptitude install babeld ahcpd ou sous OpenWrt avec opkg install babeld ahcpd;
  • disposer des pilotes réseau pour votre ordinateur ;
  • autoriser le transfert des paquets ;
  • avoir l'IPv6 activé.

Configuration pour Debian GNU/Linux

On va imaginer ici que vous avez un routeur dans votre réseau local qui fournit une adresse IP et une route par défaut, et que vous êtes connecté par un câble Ethernet à ce routeur qui vous donne l'accès à Internet (ce routeur va donc indiquer une route par défaut que vous aller redistribuer au sous-réseau Babel).

/etc/network/interfaces

# Exemple à adapter à votre 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 adresse avec ahcpd.
# Par contre, un serveur ahcpd DOIT avoir une adresse IP (il ne se l'auto-attribue pas) :
# si vous souhaitez que ahcpd soit en mode serveur, vous devez activer et régler les 3 lignes suivantes
#  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écessaire et 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

Pour la configuration du WiFi, certains pilotes ne supportent pas la façon dont j'ai écrit les lignes commençant par wireless-... . Une solution sans garantie consiste à utiliser les directives pre-up suivies de commandes comme iwconfig.


/etc/babeld.conf

redistribute proto 3 ip 0.0.0.0/0 eq 0 metric 128

Le partage de la route par défaut se fait avec ip 0.0.0.0/0 eq 0, tandis que proto 3 est là pour indiquer que la route par défaut sera obtenue à partir de DHCP.

/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 déployer un serveur AHCP et ainsi donner une adresse IP aux nœuds, sous Debian, il vous faut créer le fichier /etc/ahcp/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 son fichier de configuration en paramètre, ce que je ne sais pas encore faire de façon automatique au démarrage sous Debian. Il faudrait voir du coté de /etc/init.d/ahcpd. Je le lance donc à la main (on pourrait aussi utilier le fichier /etc/rc.local):

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.


Configuration pour OpenWrt

on va imaginer ici que vous avez un routeur dans votre réseau local qui fournit une adresse ip et une route par defaut, et que vous êtes connecté par le câble réseau à ce routeur qui vous donne l'accès à Internet (ce routeur va donc indiquer une route par defaut que vous aller redistribuer au sous-réseau Babel).

/etc/config/network

# Exemple à adapter à votre réseau local :
config interface 'loopback'
 option ifname 'lo'
 option proto 'static'
 option ipaddr '127.0.0.1'
 option netmask '255.0.0.0'
#config globals 'globals'
#	option ula_prefix 'fdff:5ce0:a48d::/48'
config interface 'lan'
 option ifname 'eth0'
 option proto  'static'
 option ipaddr '192.168.10.1'
 option netmask '255.255.255.0'


# Bababa-baba-babel	
config interface 'wlan'
 option ifname 'wifi_babel'
 option proto  'static'
 option ipaddr '192.168.10.2'
 option netmask '255.255.255.255'

/etc/config/wireless

config wifi-device  wlan0
 option type     mac80211
 option channel  6
 option hwmode	11ng
 option path	'platform/ar933x_wmac'
 option htmode	HT20
 list ht_capab	SHORT-GI-20
 list ht_capab	SHORT-GI-40
 list ht_capab	RX-STBC1
 list ht_capab	DSSS_CCK-40


config wifi-iface
 option ifname 	'wifi_babel'
 option device   'wlan0'
 option network  'wlan'
 option mode     'adhoc'
 option ssid     'babel-mesh'
 option encryption none

/etc/config/babeld

Quelques lignes inchangées au début du fichier :

config interface wlan
 # Remove this line to enable babeld on this interface
 #option 'ignore' 'true'
 # option 'wired' 'auto'
 # option 'link_quality' 'auto'
 # option 'split_horizon' 'auto'
 # The default is 96 for wired interfaces, and 256 for wireless ones
 ## option 'rxcost' '256'
 # The default is specified with the -h and -H command-line flags.
 ## option 'hello_interval' '4'
 # This can be set to a fairly large  value,  unless significant
 # packet loss is expected.  The default is four times the hello
 # interval.
 ## option 'update_interval' '16'

config interface lan

#option 'ignore' 'true'

# A filter consists in a type ('in', 'out' or 'redistribute'), an action
# ('allow', 'deny' or 'metric xxx') and a set of selectors ('ip', 'eq',
# etc.).  See /etc/babeld.conf for more details.
# Here is a sample filter wich redistributes the default route if its
# protocol number is "boot", e.g. when it installed by dhcp.  It is
# disabled by default.
config filter
 #option 'ignore' 'true'
 # Type
 option 'type' 'redistribute'
 # Selectors: ip, eq, le, ge, neigh, id, proto, local, if
 option 'ip' '0.0.0.0/0' 
 option 'eq' '0'
 # option 'proto' '3'
 # Action 
 option 'action' 'metric 128'


/etc/config/ahcpd

Quelques lignes inchangées au début du fichier :

package ahcpd

config ahcpd
 # Choose ahcp mode: client (default), server or forwarder
 option 'mode' 'server'
 # Uncomment the following lines to enable ahcpd on the desired
 # interfaces.
  list 'interface' 'lan'
  list 'interface' 'wlan'

 # The following only makes sense in 'server' mode.
 # Tweak to suit your needs.
  list 'prefix' 'fde6:20f5:c9ac:358::/64'
  list 'prefix' '192.168.10.128/25'
 ## list 'name_server' 'fde6:20f5:c9ac:358::1'
  list 'name_server' '192.168.1.1'
 ## list 'ntp_server' '192.168.4.2'
  option 'lease_dir' '/tmp'

 # option 'id_file' '/var/lib/ahcp-unique-id'
 # option 'log_file' '/var/log/ahcpd.log'
 # The configuration file is not necessary since you can configure
 # everything from this file.  But still, you might prefer using it.
 ## option 'conf_file' '/etc/ahcp/ahcp.conf'

 # option 'multicast_address' 'ff02::cca6:c0f9:e182:5359'
 # option 'port' '5359'
 # option 'ipv4_only' 'false'
 # option 'ipv6_only' 'false'
 # option 'lease_time' '3666'
 # option 'debug' '1'


NAT avec iptables /etc/rc.local (Debian et OpenWrt)

Pour, finir je rajoute une règle iptables pour faire de la NAT. Il existe d'autres solutions plus élégantes, mais celle-ci s'applique au cas où vous n'avez pas le contrôle sur le routeur qui vous donne l'accès à Internet.

Cela vous permettra 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 autres que ce sont les adresses MAC qui sont importantes, beaucoup plus que les adresses IP).

iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE

Mais pourquoi ça fonctionne pas ?

Vérifiez :

  • que babeld et ahcpd sont lancés (avec la commande pidof babeld et pidof ahcpd) ;
  • que vous avez de l'IPv6 ;
  • que le pare-feu autorise la NAT (avec la commande iptables -t nat -L) ;
  • que le pare-feu accepte le transfert de port.

Quand

Date
Durée envisagée
Animation
Err404

Notes et références

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

Voir aussi