IT & + si affinités

Encore un blog de sysadmin … mais pas uniquement ;-)

Installation OpenWRT sur RouterBoard RB133 RB450 2/2

Une fois démarré, vous obtenez la main en console série avant que tous les services soient démarrés. Vous entendez aussi un cliquetis qui dure jusqu’à ce que le watchdog timer démarre.

Connectez vous en console série afin de configurer les ports.

Comme indiqué dans la page suivante, la puce adm5120 de notre routeur dispose d’une matrice de connexion qui permet d’utiliser l’appareil en tant que switch gérant les VLANs. L’affichage et la configuration se fait à l’aide de la commande admswconfig 

Utilisé sans argument vous obtenez l’affichage de la configuration courante :

root@OpenWrt:~# admswconfig 
ethX    port0    port1    port2    CPU
0         1        1        1       1
1                                   1
2

Ici on voit que tous les ports logiques ainsi que le CPU sont reliés sur l’interface eth0.

Pour modifier ces réglages et assigner un port logique par interface physique entrez les commandes suivantes :

admswconfig eth0 2c
admswconfig eth1 1c
admswconfig eth2 0c

Vous obtenez la configuration suivante :

root@OpenWrt:~# admswconfig

ethX    port0   port1   port2   CPU
0                           1    1
1                   1            1
2           1                    1

 

Bon ça c’était la méthode manuelle, vous pouvez aussi modifier les fichiers de configuration pour obtenir le même résultat et ne pas perdre votre config au reboot. Définissez le mot de passe root puis connectez vous en ssh, l’IP par défaut est 192.168.1.1 sur le premier port (celui qui fait PoE, sur mon boitier il est marqué Eth1).

Le fichier est /etc/config/network

Configurez la rubrique VLAN configuration comme indiqué plus haut :

#### VLAN configuration
config switch
        option eth0     "2"
        option eth1     "1"
        option eth2     "0"

Configurez ensuite les interfaces WAN et LAN comme vous le souhaitez, enfin supprimez ou commentez l’option bridge.
?
#### LAN configuration          
config interface lan 
        option ifname   "eth1"
        option proto    static
        option ipaddr   192.168.1.1
        option netmask  255.255.255.0

 #### WAN configuration              
config interface        wan
        option ifname   "eth0"
        option proto    dhcp

 

Installation de l’interface web LuCI :

Pour utiliser opkg vous devez corriger le fichier /etc/opkg.conf , il faut décommenter les lignes correspondants aux logiciels qui vous intéressent et les modifier comme ceci :

http://downloads.openwrt.org/snapshots/trunk/adm5120/rb1xx/packages/base/Packages.gz

doit devenir :

http://downloads.openwrt.org/snapshots/trunk/adm5120/generic/packages/base/Packages.gz

Faites un opkg update, puis opkg install luci

Démarrez le serveur web : /etc/init.d/uhttpd start

Vous pourrez désormais accéder à la plupart des réglages depuis un navigateur grâce à l’interface LuCI à l’adresse http://192.168.1.1/ c’est un peu lent mais bien pratique.

Note : Vous aurez remarqué que les diodes des interfaces réseau ne fonctionnent pas. Il est possible de les configurer dans LuCI rubrique : Système / LED Configuration, mais ce n’est pas clair et je n’ai pas trouvé de documentation ou d’exemples.

Amusez vous bien :) et si vous avez tout cassé, il vous reste toujours la console série pour faire un nouvel upload du système de fichier ;-)

Source :
https://www.linux-mips.org/wiki/ADM5120_switch

Installation OpenWRT sur RouterBoard RB133 / RB450 1/2

Note : ce post n’avais pas été republié depuis la réinstallation de mon serveur car il n’était plus à jour, je l’ai donc rafraichi 🙂 il fonctionne aussi (modifiez juste l’architecture cible) avec un routerboard 450.

Depuis longtemps, je disposais d’une carte Routerboard 133 qui ne me servait pas. J’ai donc regardé comment l’utiliser au mieux.

Les cartes Routerboard (RB) sont fournies avec un OS spécialisé pour faire du routage RouterOS. Il ressemble dans sa conception à JunOS l’OS des switchs/routeurs Juniper.

Avantages :

  • il est parfaitement adapté au matériel.
  • propose beaucoup de fonctionnalités.
  • documentation officielle détaillée.

Inconvénients :

  • pas libre.
  • pas très répandu.
  • pas évident à prendre en main.
  • peu d’informations en dehors du manuel constructeur.
  • Openvpn uniquement en connexion TCP (et toujours pas UDP).

 

Donc j’ai préféré installer la distribution OpenWRT. L’installation sur une carte RouterBoard se fait en plusieurs étapes :

  1. compiler une image ramdisk d’OpenWRT pour votre carte RB.
  2. recompiler OpenWRT pour obtenir le kernel et le système de fichiers.
  3. démarrer en bootp sur l’image netboot.
  4. transférer le kernel et le système de fichier sur le RouterBoard.

Pour la compilation, vous aurez besoin des paquets suivants :

aptitude install gcc  binutils bzip2 flex python perl make find grep \ 
diff unzip gawk getopt libz-dev headers g++ git subversion ncurses-dev

Compilation de l’image ramdisk :

Récupérez les sources de la dernière version sur le site officiel :

git clone git://git.openwrt.org/12.09/openwrt.git

Note : la version 14.07 (Barrier breaker) ne contient pas le système cible ADM5120, vous ne pouvez donc pas l’utiliser.

Note : si vous compilez depuis un périphérique monté, vous aurez des erreurs indiquant une dépendance manquante alors qu’elle est installée exemple :

Build dependency: Please install the GNU C++ Compiler (g++).

Dans ce cas, placez vous sur une autre partition ou ajoutez les arguments suivants lors du montage du périphérique : user,exec,suid,dev.

un dossier openwrt est créé par le git clone, déplacez vous dedans.

Faites un make menuconfig

Choisissez comme paramètres principaux ::

  • Target System : Infineon/ADMTek ADM5120
  • Subtarget : MikroTik RB-1xx
  • Target Profile : Mikrotik RouterBoard 1xx family
  • Target Image: ramdisk
    • compression : lzma

Lancez la  compilation, avec la commande make -j n V=99 (avec n le nombre de tâches à exécuter en parallèle en fonction du nombre de cœurs de votre machine) cela va prendre un certain temps.

Une fois terminé, vous trouverez dans le dossier ./bin/adm5120/ un fichier openwrt-adm5120-rb1xx-vmlinux-initramfs.elf, celui ci nous permettra de démarrer le Routerboard en mémoire.

Compilation de l’image finale

Refaites ensuite un make menuconfig, sélectionnez les mêmes paramètres sauf pour « Target image »

  • Root filesystem archives : tar.gz
  • Root filesystem images : jffs2

Puis sauvez et relancer la compilation.

Vous trouvez dans le dossier bin/ plusieurs nouveaux fichiers ceux qui nous intéressent sont  openwrt-adm5120-rb1xx-vmlinux.elf c’est le kernel et openwrt-adm5120-rb1xx-RouterBoard-rootfs.tar.gz c’est le système de fichiers.

Démarrage en bootp :

Il vous faudra :

  • un moyen de vous connecter sur le port série qui fera office de console.
  • l’image netboot de démarrage en ram (fichier initramfs elf).
  • le kernel (fichier elf)
  • le système de fichier racine dans un fichier compressé tar.gz.
  • un serveur DHCP (isc-dhsp-server).
  • un serveur tftp (atftpd).
  • un serveur web (Apache 2)*
ddns-update-style none;

option domain-name-servers 8.8.8.8;

default-lease-time 600;
max-lease-time 7200;

log-facility local7;

allow booting;
allow bootp;

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.10 192.168.1.20;
}

host routerboard {
  hardware ethernet 00:0c:42:XX:XX:XX;
  fixed-address 192.168.1.100;
  next-server 192.168.1.2;
 filename "openwrt-adm5120-rb1xx-vmlinux-initramfs.elf";
}

Il faut également un serveur tftp afin de délivre le fichier elf, j’utilise atftpd en direct (sans xinetd). Le fichier de config est /etc/default/atftpd. Le dernier paramètre indique le dossier ou est placé le fichier de boot indiqué par le DHCP.

USE_INETD=false
OPTIONS=" --daemon --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 \
--mcast-addr 239.255.0.0-255 --port 69 --mcast-ttl 1 --maxthread 100 \
--logfile /var/log/atftpd.log --verbose=9 /tftpboot"

Note : en cas de problème au démarrage il n’y a pas de message, il faut consulter le fichier de log.

Enfin, Apache sera juste utilisé pour délivrer les fichiers kernel et image du filesystem avec wget, pas de configuration spécifique.

Placez le fichier initramfs.elf dans le répertoire servi par atftpd et indiquez son nom dans le fichier dhcpd.conf, relancez les deux services.

Placez le fichier elf et le tar.gz dans le DocumentRoot du serveur web.

Transfert des fichiers

Connectez vous en console sur le RB par le port série, putty (lancé en root) fonctionne très bien, picocom aussi. Pour ma part, j’ai utilisé un adaptateur USB vers série et mon port série apparait en /dev/ttyUSB0 (Si ce n’est pas votre cas, surveillez le syslog au moment de brancher l’adaptateur) Le débit de mon RouterBoard est 115200.

Branchez le port série sur le RB, reliez le premier port Ethernet (celui qui fait PoE) sur votre réseau et branchez son alimentation. Vous devriez voir la séquence de boot du RouterBoard, affichée. Vous avez 2 sec pour appuyer sur une touche afin d’afficher le menu de démarrage. Celui ci vous  permet de sélectionner

  • le « boot device » [o]
    • choisissez Boot from Ethernet [e]
  • le « boot protocol [p]
    • choisissez bootp protocol [1]

Quittez le menu, le routeur redémarre. Il devrait obtenir l’adresse IP fournie par votre serveur DHCP et commencer à charger le fichier elf.

Le système démarre et vous rend la main, vous pouvez lister les partitions de la mémoire nand avec le commande cat /proc/mtd

Selon le modèle vous pouvez en avoir un nombre variable, sur mon RB133 il y en a 4 :

  1. mtd0 « booter »
  2. mtd1 « firmware »
  3. mtd2 « kernel »
  4. mtd3 « rootfs »

Les deux premières ne doivent pas être modifiées sous peine de rendre inutilisable le routeur.

Monter la partition kernel

mount /dev/mtdblock2 /mnt
cd /mnt
ls

Vous devez trouver un fichier kernel et peut être un dossier lost+found.

Note : vous pouvez faire une copie du fichier kernel original et du contenu de la partition mtdblock3 avec scp afin de conserver un backup.

Récupérez le fichier bin par un wget ou scp et remplacez le kernel.

cd /tmp
wget http://192.168.1.2/openwrt-adm5120-rb1xx-vmlinux.elf

renommez le kernel

mv openwrt-adm5120-rb1xx-vmlinux.elf /mnt/kernel
umount /mnt

Faites de même avec la partition système :

mount /dev/mtdblock3 /mnt
cd /mnt
ls

Note : vous trouvez ici une arborescence linux classique, faites donc la commande dont vous avez toujours rêvé ^^ :

rm -rf *
wget http://192.168.1.2/openwrt-adm5120-rb1xx-rootfs.tar.gz
tar -xzvf openwrt-adm5120-rb1xx-rootfs.tar.gz
ls
rm openwrt-adm5120-rb1xx-rootfs.tar.g

Si tout est bon quittez le dossier, démontez le et redémarrez

cd /root
umount /mnt
reboot

Il faudra ensuite repasser par le menu et paramétrer le boot device en « boot from NAND only » et vous pouvez démarrer sur votre nouveau système 🙂


Les principaux sites qui m’ont permis de mettre en place cette procédure :

Backup mysql databases

Un script de backup des bases mysql simple :

il est prévu pour fonctionner sur debian.

#!/bin/bash
# Name : backup_mysql.sh
# Author : @Markhor75 
# Last Mod : 2014 08 27
# Backup all MySQL databases

DESTINATION="/home/backup/mysql"
RETENTIONDAYS="2"

MYSQLUSER=`cat /etc/mysql/debian.cnf |grep -m 1 user |awk '{print $3}'`
MYSQLPASS=`cat /etc/mysql/debian.cnf |grep -m 1 password |awk '{print $3}'`
DATE="$(date +"%Y%m%d_%H%M")"

mysqldump --user=$MYSQLUSER --password=$MYSQLPASS --events --all-databases |bzip2 >$DESTINATION"/"$DATE""_mysql_""$HOSTNAME""_db.bz2
find $DESTINATION -maxdepth 1 -ctime +$RETENTIONDAYS -type f -exec rm {} \;