====== openwrt sur les TP-link 3020 3220 ====== (gepeto,françois) ===== Installation de la base de travail openwrt TP-Link TL-MR3020===== **L'idée est** - installer un openwrt qui fonctionne directement a partir du firmware donné sur le site openwrt pour ce matériel - générer à coté une base de compilation de paquet et module sur notre pc pour ajouter des fonctionnalités ultérieurement voir refaire le firmware complet en plus leger **on y va** - Telecharger et installer et lancer crunchbang sur un disque, pas de pb de ce cote - de http://wiki.openwrt.org/doc/howto/buildroot.exigence 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 * le processeur un ar9331 donc ar71/9 sur openwrt la page qui va [[http://wiki.openwrt.org/toh/tp-link/tl-mr3020]] ===== Installation TP-link MR3220 ===== ==== Packages nécessaires à la compilation du firmware ==== 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 ==== Installation du TP-Link MR-3220 ==== * connexion sur http://192.168.1.1 l'interface d'origine pour flasher le firmware openwrt-xxxx-squashfs-factory.bin (les mises à jour du firmware openwrt se font avec les version openwrt-xxxx-squashfs-sysupgrade.bin) * telnet 192.168.1.1 pour changer le password root avec passwd * //vi /etc/config/network// 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 * //vi /etc/config/wireless// 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 * //vi /etc/hosts// ajouter l'adresse interne de bricolab.snalis.org /etc/init.d/dnsmasq restart pour prendre en compte le changement de /etc/hosts * //vi /etc/opkg.conf// changer l'URL des packages pour notre dépot bricolab.snalis.org * //vi /etc/config/fstab// à éditer pour monter automatiquement l'usb et /etc/init.d/fstab enable /etc/init.d/fstab start * Activer batman : 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 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