HowToBatman

Da EigenWiki.

Con queste istruzioni si può creare una mesh di prova fra diversi pc oppure collegarsi ad EigenNet, utilizzando batman-adv e antenna wireless integrata.


Prima di inziare fermiamo il nostro network manager, potrebbe interferire.

/etc/init.d/network-manager stop


Dobbiamo impostare la modalità della nostra scheda wireless. Può essere Managed (client che si connette ad access point), Master (agisce da access point), Ad-Hoc (nodi che si collegano fra loro senza access point). Quindi scegliamo la modalità Ad-Hoc.

iwconfig wlan0 mode Ad-Hoc


Batman incapsula il traffico aggiungendo un header di 28 bytes in ogni pacchetto, quindi bisogna aumentare la dimensione massima dei pacchetti che possono essere trasmessi sull'interfaccia fisica da 1500 a 1528 (in modo che possano passare i pacchetti originariamente grandi 1500)

ifconfig wlan0 mtu 1528


Possiamo scegliere il canale su cui operare. Saltando questo passaggio si usa il canale 1

iwconfig wlan0 channel [n]


L'essid serve ad identificare gli altri nodi della mesh

iwconfig wlan0 essid "lamiamesh"


Impostiamo anche lo stesso bssid perchè alcuni driver wifi hanno problemi quando ci sono molti nodi con bssid diversi e non si associano.

iwconfig wlan0 ap 02:aa:bb:cc:dd:ee


A questo punto possiamo tirare su l'interfaccia

ip link set wlan0 up


Molto probabilmente avremo già il modulo batman-adv, in caso contrario lo scarichiamo e installiamo da http://www.open-mesh.org . Per caricarlo

modprobe batman-adv


Batman opera in kernel space per evitare il sovraccarico di read() e write() che avrebbe processando i pacchetti in user space. Per configurare il modulo batman-adv si usa il programma batctl.


Adesso aggiungiamo le interfacce su cui vogliamo fare la mesh

batctl if add wlan0

e batman crea automagicamente una nuova interfaccia virtuale bat0 inconsapevole del layer inferiore, che ci collega a tutti gli altri partecianti alla mesh.


Configuriamo il layer 3. Tutti i partecipanti possono assegnarsi un ip oppure uno può attivare un server dhcp su bat0

ip a add 192.168.1.1/24 dev bat0


per l'accesso ad internet uno dei nodi può agire da gateway:

iptables -t nat -A POSTROUTING -o intefaccia_con_internet -j MASQUERADE

e sui client

ip r add default via ip_del_gateway dev bat0


per dare la possibilità ad altri di partecipare alla mesh, senza usare batman e collegandosi alla porta ethernet del pc, si usano i bridge.

brctl addbr mesh-bridge
brctl addif mesh-bridge eth0
brctl addif mesh-bridge bat0


e per openwrt?

git clone git://git.openwrt.org/12.09/openwrt.git
make menuconfig e classica configurazione. kmod-batman-adv si trova sotto Kernel modules -> Network Support

Si usano appositi file di configurazione in /etc/config/wireless

config wifi-iface 'wmesh'
       option device 'device fisico'
       option ifname 'adhoc0'
       option network 'mesh'
       option mode 'adhoc'
       option ssid 'lamiamesh'
       option bssid '02:aa:bb:cc:dd:ee'

in /etc/config/network

config interface 'mesh'
       option ifname 'adhoc0'
       option mtu '1528'
       option proto 'batadv'
       option mesh 'bat0'