(gepeto,françois)
L'idée est
on y va
Ne pas etre root !
#truc a verifier sudo apt-get install subversion build-essential sudo apt-get install ncurses-dev flex libncurses5-dev zlib1g-dev gawk libssl-dev telnet pkg-config # recup d'openwrt mkdir ~/openwrt cd openwrt svn co svn://svn.openwrt.org/openwrt/trunk/ # parametrage global cd trunk ./scripts/feeds update -a ./scripts/feeds install -a make defconfig make prereq make menuconfig # et après tout plein de modif, prevoir la journee :) make V=99
Voila une base source openwrt
De la ressource : https://forum.openwrt.org/viewtopic.php?id=31125 avec les firmware
et chez nous :http://bricolab.snalis.org/openwrt/ar71xx/ avec tout plein de modules et d'appli !!
Du coté du TP-Link, pour s'y loger ,
ifconfig eth0:1 192.168.10.20 up
pour ipv6 : kmod-ipv6 radvd (radvd semble permettre le routage ipv6, il n'est pas nécessaire pour nos adresses link-local)
pour USB : kmod-usb-core kmod-usb2 kmod-usb-storage kmod-fs-ext4 kmod-scsi-generic block-mount (kmod-fs-ext4 gère ext2, ext3 et ext4; kmod-scsi-generic à tester s'il est vraiment nécessaire)
pour openmesh batman : kmod-batman-adv
de plus, le kernel doit être compilé avec les informations de debug (debugfs)
pour python-mini : libpthread zlib
(les mises à jour du firmware openwrt se font avec les version openwrt-xxxx-squashfs-sysupgrade.bin)
enlever la ligne 'bridge' qui relie wifi et ethernet
definir une adresse statique différente de 192.168.1.1 (là 192.168.1.240)
ajouter
option gateway 192.168.1.10 option dns 192.168.1.10
ajouter une nouvelle interface 'wifi' vide pour l'instant :
config interface wifi
il y avait des options switch que je ne connais pas et que je n'ai pas touchées
activer le wifi en changeant ou commentant l'option disabled
changer option 'network' 'lan' en option 'network' 'wifi' le nom du domaine wifi qui doit être celui de l'interface définie dans /etc/config/network (c'était lan par défaut, pour le bridge)
changer option 'mode' 'ap' en option 'mode' 'adhoc'
Par défaut la connexion wifi a comme paramètres : ssid openwrt, encryption none et channel 11 sur chaque nouvelle installation openwrt
/etc/init.d/network restart pour redémarrer le réseau
ajouter l'adresse interne de bricolab.snalis.org
/etc/init.d/dnsmasq restart pour prendre en compte le changement de /etc/hosts
changer l'URL des packages pour notre dépot bricolab.snalis.org
à éditer pour monter automatiquement l'usb et /etc/init.d/fstab enable /etc/init.d/fstab start
batctl if add wlan0
ifconfig bat0 up
et voilà, les machines se détectent !
batman (http://www.open-mesh.org/wiki/batman-adv/) crée une interface de routage niveau 2 (liaison) virtuelle, multi-saut. Attention, la version de batman-adv doit être la même sur toutes les machines!
ping6 -I bat0 <adresse ipv6 de bat0 dans ifconfig> fonctionne
C'est cette adresse IPv6 de bat0 (link-local) que l'on peut recontruire à partir des adresses MAC détectées par batman et stockées dans /sys/kernel/debug/batman_adv/bat0/transtable_global
que l'on peut aussi avoir avec la commande batctl tg
Fonction python pour le faire (sans vérification de la validité de la chaine):
def ipv6frommac(st): "Construit l'addresse IPv6 a partir d'une adresses MAC sous forme de chaine" return 'fe80::' + hex(int(st[0:2]+st[3:5],16)^0x200)[2:] +\ ':' + st[6:8] + 'ff:fe' + st[9:14] +st[15:17]
Cette fonction renvoie par exemple fe80::ecb5:23ff:fe37:15ad si on lui passe ee:b5:23:37:15:ad
Les adresses MAC gérées par batman ne sont pas les vraies adresses MAC, mais une adresse générée aléatoirement pour bat0. Si on redémarre batman sur une machine distante, la nouvelle adresses aléatoire est remplacée rapidement. Si on éteint une machine, elle disparaît de la table au bout de 4-5 minutes.
Les sockets que nous créerons devront être “bindées” à l'adresse locale de bat0 que l'on trouve dans ifconfig, par batctl tl ou dans le fichier /sys/kernel/debug/batman_adv/bat0/transtable_local