feigned

Installer le firmware OpenWrt sur un routeur Wi-Fi avec 4 Mo de stockage

Avatar de Le Crabe Le Crabe

Publicité

  • 12/08/18 : instructions pour utiliser Git Bash à la place de l'Invite de commandes dans Cmder pour utiliser SSH.
  • 28/05/18 : configuration du répertoire partagé dans vagrant.
    • 17/01/18 : reconnexion automatique au réseau LTE (4G).
    • 07/02/18 : correction du problème de copie du firmware de la machine invitée (Debian) vers la machine hôte (Windows).
    • 03/02/18 : configuration multi-WAN.
    • 01/02/18 : prise en compte des bandes de fréquences 2,4 GHz et 5 GHz dans la configuration de l'accès Internet via un point d'accès Wi-Fi.
    • 19/01/18 : utilisation du port série (/dev/ttyUSB0) du Huawei E3372 pour la connexion Internet.
    • 18/01/18 : configuration de la connexion Internet via un point d'accès Wi-Fi.

Vous avez acheté un routeur avec un espace de stockage de 4 Mo comme le routeur TP-Link TL-MR3020 et vous souhaitez y installer le firmware alternatif OpenWrt ? Alors ce tutoriel est fait pour vous !

Publicité

Comme vous vous en êtes sûrement rendu compte, il est certes possible d’installer ce firmware alternatif sur votre routeur mais il est impossible d’installer des paquets supplémentaires faute de place. Or, c’est tout l’intérêt d’OpenWrt qui s’échappe puisque vous n’allez pas pouvoir profiter des nombreux programmes qui permettent de transformer votre routeur en appareil haut-de-gamme !

Mais ne vous en faites pas : en suivant ce tutoriel pas-à-pas, vous serez en mesure d’installer le firmware alternatif OpenWrt et tous les programmes que vous voulez sur votre routeur et son stockage interne de 4 Mo ! 😉

Important : si vous avez un routeur avec plus de 4 Mo de stockage interne comme le routeur TP-Link Archer C7 V2, quittez ce tutoriel et suivez celui-ci à la place : installer le firmware OpenWrt sur un routeur Wi-Fi.

Publicité

Préambule

OpenWrt et LEDE

OpenWrt et LEDE sont des firmwares alternatifs basés sur le système d’exploitation GNU/Linux à destination des systèmes embarqués (routeurs, modems…) et qui visent à remplacer le firmware fourni par le fabricant.

OpenWrt a vu le jour en 2014. En mai 2016, quasiment tous les développeurs d’OpenWrt sont partis pour un nouveau projet, LEDE (Linux Embedded Development Environment), ce qui a arrêté le développement d’OpenWrt. LEDE est donc un fork d’OpenWrt, c’est-à-dire un firmware créé à partir du code source d’OpenWrt.

En janvier 2018, les équipes de LEDE et OpenWrt ont annoncé que les deux projets allaient fusionner. Le projet unifié utilise le nom OpenWrt mais utilise le code source et les règles du projet LEDE. Les membres actifs des anciens projets LEDE et OpenWrt travaillent désormais ensemble sur l’OpenWrt unifié.

Il est recommandé d’installer OpenWrt sur des routeurs équipés d’au moins 8 Mo de mémoire flash et de 64 Mo de mémoire vive (RAM). La mémoire flash permet de stocker l’image du firmware et des programmes supplémentaires (OpenVPN, Samba, LuCI…) ; la mémoire vive à exécuter les tâches confortablement, sans latence. Néanmoins, beaucoup de routeurs entrée-de-gamme sont équipés de 4 Mo de mémoire flash et de 32 Mo de mémoire vive, comme le TP-Link TL-MR3020.

Est-il possible d’installer OpenWrt sur des routeurus 4/32 ?

Oui, c’est possible mais avec quelques limitations. En ce qui concerne la mémoire vive, un routeur avec 32 Mo de RAM peut fonctionner correctement, mais il peut montrer ses limites et être lent à exécuter certaines tâches, mais tout dépend aussi de votre utilisation du système. Il est plus confortable d’avoir au moins 64 Mo de RAM pour avoir un système fluide. Concernant la mémoire flash, les routeurs avec 4 Mo de mémoire flash peuvent seulement accueillir l’image du firmware. Il n’est donc pas possible d’y installer des paquets supplémentaires comme LuCI, l’interface graphique d’OpenWrt, ou OpenVPN, le programme qui permet de configurer un client VPN.

Donc, avec mon routeur TP-Link TL-MR3020, je ne vais pas pouvoir télécharger et installer de nouvelles applications ?!

Si, c’est possible ! En utilisant un périphérique de stockage USB, vous allez pouvoir étendre l’espace de stockage interne de votre routeur et ainsi installer plus de paquets. Cette technique se nomme extroot.

extroot : qu’est-ce que c’est ? Comment ça marche ?

Il faut déjà savoir que le firmware OpenWrt s’installe en utilisant la fonctionnalité OverlayFS[1] du noyau Linux.

[1] OverlayFS ^

OverlayFS est un mécanisme du système de fichiers Linux qui permet de fusionner plusieurs répertoires. Prenons l’exemple de deux répertoires, que l’on appellera upper et lower. OverlayFS présente une vue unifiée de ces deux répertoires : le répertoire présenté – overlay – est le résultat de la superposition du répertoire upper sur le répertoire lower.

Le mécanisme OverlayFS – Source : blaess.fr

Si un fichier existe à la fois dans le répertoire upper et dans le répertoire lower, le fichier du répertoire upper est présenté et le fichier du répertoire lower est masqué. S’il s’agit d’un répertoire, le contenu des répertoires upper et lower est fusionné et présenté.

L’utilisation habituelle de ce mécanisme est de fusionner une partition système (appelée « root file system » ou rootfs (/)) qui sera accessible en lecture seule (lower) avec une autre partition qui sera elle accessible en écriture (upper). La partition upper vient se superposer à la partition rootfs, montrant ainsi un seul et unique système de fichiers en lecture/écriture.

Quel est l’intérêt de l’OverlayFS ?

L’intérêt de l’OverlayFS est qu’il protège le rootfs de toutes modifications susceptibles d’altérer le comportement du système : le rootfs n’est en effet accessible qu’en lecture seule et toutes les modifications apportées sur le système sont stockées uniquement sur la partition upper.

La vue présentée par OverlayFS inclut toutes les modifications de la partition upper, le rootfs restant lui inchangé. Ainsi, en cas de problèmes, il est possible de restaurer la configuration d’origine du système en effaçant simplement la partition ré-inscriptible upper.

extroot fonctionne en utilisant une partition upper sur le périphérique externe (ex. : clé USB, carte microSD…), laquelle est montée par-dessus la partition upper du routeur, celle-ci étant elle-même montée par dessus la partition rootfs du même routeur. Vous suivez ? 😛 Cette approche permet d’avoir une solution de repli dans le cas où le périphérique de stockage externe est retiré : le routeur aura toujours à sa disposition la partition upper du stockage interne et chargera ainsi toute la configuration à partir de là ; ce qui veut dire qu’il se comportera exactement de la même manière qu’avant la mise en place de l’extroot.

Ceci dit, en utilisant une clé USB ou une carte microSD, nous avons un problème.

Pour que la clé USB/carte microSD soit reconnue par OpenWrt, il faut que celle-ci utilise le système de fichiers ext4. Jusque là, pas de souci : il suffit simplement de créer une partition ext4 sur la clé USB/carte microSD. Mais pour que OpenWrt détecte la partition ext4, il faut que le paquet kmod-fs-ext4 soit installé sur le système. Or, comme nous l’avons vu, un routeur avec 4 Mo de mémoire flash comme le TP-Link TL-MR3020 peut seulement contenir l’image du firmware, il n’y a pas assez de place pour installer des paquets supplémentaires comme le paquet kmod-fs-ext4.

La solution ? Nous allons créer une image personnalisée du firmware OpenWrt, ultra-légère, en y ajoutant seulement les paquets nécessaires à la détection de la clé USB/carte microSD et sa partition ext4. Ainsi, nous pourrons mettre en place l’extroot, OpenWrt pourra alors utiliser l’espace de stockage de la clé USB/carte microSD et nous pourrons installer tous les paquets qui nous font plaisir (LuCI, OpenVPN, Samba…). Problème résolu ! 🙂

Huawei E3372 et extroot

Mais attends… Sur mon routeur TP-Link TL-MR3020, je n’ai qu’un seul port USB ! Si je branche une clé USB afin de mettre en place l’extroot, je ne pourrais plus me servir de mon dongle USB LTE Huawei E3372 pour me connecter en 4G !

Bien sûr que si mon ami ! Comme je l’ai mentionné précédemment [cf. : se connecter à Internet via une clé USB 4G en France et à l’étranger], le dongle Huawei E3372 dispose d’un emplacement pour carte microSD. Ainsi, vous allez pouvoir utiliser l’espace de stockage d’une carte microSD que vous placerez dans le dongle Huawei E3372 afin de mettre en place l’extroot 🙂

Ceci dit, en utilisant la carte microSD du dongle Huawei E3372, nous avons un problème. Mais heureusement, nous avons la solution pour le résoudre.

Si vous avez lu l’article sur l’installation du firmware Stick sur le dongle Huawei E3372, vous savez que ce dernier fonctionne dans deux configurations différentes [cf. : fonctionnement du dongle Huawei E3372], la seconde configuration succédant à la première après l’exécution du programme usb-modeswitch sous Linux.

Par défaut, la première configuration donne accès au lecteur CD-ROM virtuel et au lecteur de carte microSD ; la seconde configuration donne accès au modem LTE (4G) et au lecteur de carte microSD (entre autres). Nous avons donc besoin d’accéder à la seconde configuration.

Le problème est que l’usb-modeswitch va s’exécuter et « switcher » entre les deux configurations pendant le démarrage du système. Durant la phase de « switch », la carte microSD va être démontée puis remontée un peu plus tard, or, c’est elle qui contient les fichiers de configuration du système ! Dès lors, le démarrage du système va planter et le système de fichiers peut s’endommager.

La solution ? Supprimer le système à deux configurations (ou « multi-mode ») du dongle et ne garder qu’une seule configuration avec le modem LTE et le lecteur de carte microSD actifs. Ainsi, la carte microSD restera connectée tout au long du processus de démarrage, l’usb-modeswitch n’étant plus nécessaire. Problème résolu ! 🙂

En résumé, comment j’installe le firmware OpenWrt sur mon routeur 4/32 ?

Voici ce que nous allons faire pour y arriver :

  1. Créer une partition ext4 sur une clé USB/carte microSD ;
  2. Créer une image personnalisée du firmware OpenWrt intégrant seulement les paquets nécessaires à la détection de la clé USB/carte microSD ;
  3. Installer OpenWrt sur le routeur (ici, le TP-Link TL-MR3020) ;
  4. Insérer la clé USB ou le dongle Huawei E3372 et sa carte microSD dans le routeur, et mettre en place l’extroot pour augmenter la capacité de stockage d’OpenWrt ;
  5. Configuration la connexion Internet ;
  6. Installer les paquets qui nous intéressent : LuCI, OpenVPN, Samba… !

C’est parti ! 🙂

Publicité

Prérequis

Publicité

Installation du firmware OpenWrt

Étape 1 : préparation de la clé USB/carte microSD

Sur notre clé USB/carte microSD, nous allons créer une partition ext4 qui – via l’extroot – va permet d’accroitre la capacité de stockage de notre routeur qui ne possède actuellement que 4 Mo d’espace disque. Mais ce n’est pas tout : nous allons aussi en profiter pour créer une partition swap et une autre partition ext4. La clé USB/carte microSD sera ainsi décomposée en trois partitions :

  • Partition swap de 64 Mo : l’espace d’échange ou « swap » permet au système de décharger la mémoire vive physique (RAM) de l’ordinateur lorsque celle-ci arrive à saturation. Comme notre routeur ne possède que 32 Mo de RAM, nous profiterons de la présence d’un périphérique de stockage externe pour créer une partition swap de 64 Mo, ce qui donnera une mémoire virtuelle [mémoire virtuelle = mémoire vive physique + espace d’échange] totale de 96 Mo.
  • Partition ext4 « root » de 512 Mo : l’espace de stockage destiné au système, largement suffisant pour accueillir l’image du firmware OpenWrt et des programmes supplémentaires.
  • Partition ext4 « data » : un espace de stockage pour nos fichiers personnels.

C’est parti, allons partitionner notre clé USB/carte microSD !

  1. Insérez votre clé USB ou carte microSD (via l’adaptateur SD ou le dongle USB) sur votre PC.
  2. Exécutez MiniTool Partition Wizard Free.
  3. Repérez le disque correspondant à votre clé USB ou votre carte microSD. Ici, il s’agit du disque n°3 :
  4. Sélectionnez le disque > Wipe Disk.
  5. Sélectionnez l’espace non alloué (Unallocated) du disque > Create Partition et remplissez les champs comme suit :
    • Create As : Primary.
    • File System : Linux Swap.
    • Partition Size : 64 MB.

  6. Sélectionnez de nouveau l’espace non alloué (Unallocated) du disque > Create Partition et remplissez les champs comme suit :
    • Partition Label : root.
    • Create As : Primary.
    • File System : Ext4.
    • Partition Size : 512 MB.

  7. Sélectionnez une dernière fois l’espace non alloué (Unallocated) du disque > Create Partition et remplissez les champs comme suit :
    • Partition Label : data.
    • Create As : Primary.
    • File System : Ext4.
    • Partition Size : l’espace disque restant.

  8. Cliquez sur General > Apply Changes pour lancer l’exécution des opérations.

Voilà, notre clé USB/carte microSD est prête pour l’extroot !

Maintenant, allons créer notre image personnalisée du firmware OpenWrt 🙂

Étape 2 : création de l’image du firmware

Nous allons maintenant créer une image ultra-légère du firmware OpenWrt, intégrant seulement les paquets nécessaires à la détection de notre clé USB/carte microSD.

  1. Téléchargez VirtualBox (programme qui permet de créer des machines virtuelles) et installez-le.
  2. Téléchargez Vagrant (programme qui permet de contrôler une machine virtuelle en CLI) et installez-le.
  3. Ouvrez l’invite de commandes et créez une machine virtuelle avec la distribution GNU/Linux Debian :
    mkdir "%userprofile%Debian"
    cd "%userprofile%Debian"
    vagrant init debian/stretch64
  4. Installez le plugin des « Additions Invité » :
    vagrant plugin install vagrant-vbguest
  5. Nous allons configurer le répertoire partagé afin de pouvoir échanger des fichiers entre la machine hôte et la machine virtuelle. Pour ce faire, éditez le fichier Vagrantfile et ajoutez la ligne suivante après Vagrant.configure("2") do |config| :
    config.vm.synced_folder ".", "/vagrant", type: "virtualbox"

    Enregistrez le fichier puis quittez le Bloc-notes.

  6. Démarrez la machine virtuelle :
    vagrant up
  7. Connectez-vous en SSH à la machine virtuelle :
    vagrant ssh
  8. Dans la machine virtuelle, installez les paquets nécessaires à la création de l’image :
    sudo apt install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc wget unzip python
  9. Téléchargez et décompressez l’archive ImageBuilder d’OpenWrt correspondant à l’architecture de votre routeur. Par exemple, pour les routeurs ar71xx (comme le TP-Link TL-MR3020), l’archive se trouve se trouve ici : https://downloads.openwrt.org/releases/18.06.2/targets/ar71xx/generic/.
    cd ~
    mkdir openwrt && cd openwrt
    wget https://downloads.openwrt.org/releases/18.06.2/targets/ar71xx/generic/openwrt-imagebuilder-18.06.2-ar71xx-generic.Linux-x86_64.tar.xz
    tar xf openwrt-imagebuilder-18.06.2-ar71xx-generic.Linux-x86_64.tar.xz
    cd openwrt-imagebuilder-18.06.2-ar71xx-generic.Linux-x86_64
  10. Entrez la commande make info pour afficher tous les périphériques pris en charge par Image Builder. Exemple avec le routeur TP-Link TL-MR3020 :
    make info | grep mr3020 -A2
    tl-mr3020-v1:
        TP-LINK TL-MR3020 v1
        Packages: kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport

    La première ligne affiche le nom du profil, la deuxième le nom complet du périphérique et la troisième la liste des paquets installés par défaut pour le périphérique.

  11. Entrez la commande suivante pour créer l’image du firmware OpenWrt (remplacez tl-mr3020-v1 par le nom de profil de votre périphérique) :
    make image PROFILE=tl-mr3020-v1 PACKAGES="block-mount kmod-fs-ext4 kmod-usb-storage kmod-usb-net-huawei-cdc-ncm comgt-ncm kmod-usb-serial kmod-usb-serial-option kmod-usb-serial-wwan -ppp -ppp-mod-pppoe"

    Plus d’informations :

    • Les paquets block-mount, kmod-fs-ext4 et kmod-usb-storage sont nécessaires pour monter la partition ext4 de notre clé USB/carte microSD.
    • [Huawei E3372] Les paquets kmod-usb-net-huawei-cdc-ncm et comgt-ncm sont nécessaires pour se connecter à Internet avec le protocole NCM.
    • [Huawei E3372] Les paquets kmod-usb-serial, kmod-usb-serial-option et kmod-usb-serial-wwan sont nécessaires pour utiliser l’interface série du dongle Huawei E3372.
  12. Copiez le fichier image créé (qui se trouve dans le dossier ./bin/[...]) vers le répertoire partagé /vagrant:
    cp bin/targets/ar71xx/generic/*-factory.bin /vagrant

    Sur Windows, le répertoire partagé se trouve au même endroit que le fichier Vagrantfile de notre machine virtuelle Debian, soit %userprofile%/Debian.

Maintenant que nous avons notre image ultra-légère du firmware OpenWrt, allons la flasher sur notre routeur !

Étape 3 : installation d’OpenWrt sur le routeur

L’installation d’OpenWrt se fait simplement en flashant l’image du firmware via l’interface d’administration de votre routeur :

  1. Reliez votre routeur à votre PC, de préférence via Ethernet.
  2. Connectez-vous à l’interface d’administration de votre routeur. Par exemple, pour le TP-Link TL-MR3020, entrez http://192.168.0.254 dans la barre d’adresse de votre navigateur.
  3. Rendez-vous sur la page « Firmware Upgrade », sélectionnez le fichier image du firmware OpenWrt que nous avons créé puis lancez la mise à jour.
  4. Une fois l’installation terminée, lancez un ping via l’invite de commandes sur l’adresse IP 192.168.1.1 pour vérifier que le firmware OpenWrt est bien opérationnel :
    ping 192.168.1.1

Voilà, le firmware OpenWrt est installé sur notre routeur ! Bon, pour le moment, nous n’avons pas encore grand chose à cause de l’espace de stockage de 4 Mo. Pour augmenter la capacité de stockage, il va falloir mettre en place l’extroot !

Étape 4 : mise en place de l’extroot

  1. Téléchargez cmder (Full), décompressez l’archive puis exécutez cmder.exe. Cmder intègre Git for Windows et permet d’établir une connexion SSH avec des périphériques réseau.

    Important : par défaut, cmder ouvre une instance de cmd.exe (Invite de commandes) qui ne supporte pas le SSH, contrairement à bash.exe (Git Bash). Vous devez donc ouvrir un onglet (CTRL + T) et sélectionnez la tâche {bash::bash}.

    Pour plus de confort, je vous recommande de définir {bash::bash} comme tâche par défaut : Settings > Startup > Specified named task > {bash::bash} > Save settings.

  2. Connectez-vous en SSH à votre routeur :
    ssh [email protected]
  3. Insérez votre clé USB ou votre dongle Huawei E3372 et sa carte microSD sur le port USB de votre routeur.
  4. Patientez quelques secondes, puis exécutez la commande block info pour voir les partitions détectées par le système :
    block info
    /dev/mtdblock2: UUID="48708680-9c4c9a99-f5e54fe5-ff4c4ce2" VERSION="4.0" MOUNT="/rom" TYPE="squashfs"
    /dev/mtdblock3: MOUNT="/overlay" TYPE="jffs2"
    /dev/sda1: UUID="c87aac7c-d08e-d301-403a-ac7cd08ed301" LABEL="root" VERSION="1.0" TYPE="ext4"
    /dev/sda2: VERSION="1" TYPE="swap"
    /dev/sda3: UUID="023df8cd-3e8e-d301-0035-98cc3e8ed301" LABEL="data" VERSION="1.0" TYPE="ext4"

    Si vous voyez les trois partitions de votre périphérique de stockage (/dev/sda1, /dev/sda2 et /dev/sda3), tout est OK.

  5. Copiez le contenu du répertoire upper (/overlay) situé dans la mémoire flash du routeur vers la partition /dev/sda1 de la clé USB/carte microSD, qui sera à son tour un répertoire upper :
    mount /dev/sda1 /mnt ; tar -C /overlay -cvf - . | tar -C /mnt -xf - ; umount /mnt
  6. Entrez la commande suivante pour générer automatiquement le fichier de configuration /etc/fstab (FileSystemTable, ou table de système de fichiers), lequel contient les partitions que le système doit monter automatiquement au démarrage. Les trois partitions de notre périphérique de stockage seront ainsi montées automatiquement au démarrage du système.
    block detect > /etc/config/fstab; 
       sed -i s/option$'t'enabled$'t''0'/option$'t'enabled$'t''1'/ /etc/config/fstab; 
       sed -i s#/mnt/sda1#/overlay# /etc/config/fstab; 
       cat /etc/config/fstab;
    Astuce : copiez toutes les lignes ci-dessous et collez-les dans Cmder en appuyant sur les touches Shift (⇧) + Insert ou en faisant un clic droit !
  7. Redémarrez le routeur :
    reboot
  8. Vérifiez que la partition /dev/sda1 du périphérique de stockage est bien montée sur le répertoire /overlay :
    df
    Filesystem 1K-blocks Used Available Use% Mounted on
    /dev/root 2304 2304 0 100% /rom
    tmpfs 13728 64 13664 0% /tmp
    /dev/sda1 488356 1971 456126 0% /overlay
    overlayfs:/overlay 488356 1971 456126 0% /
    tmpfs 512 0 512 0% /dev

Parfait, l’extroot est en place et notre routeur dispose d’un espace de stockage suffisant pour installer plein de paquets ! Mais avant, il faut configurer la connexion Internet sur le routeur… 😉

Configuration de la connexion Internet

Via un point d’accès Wi-Fi

Note : dans cette section, j’explique comment établir une connexion WLAN en utilisant le point d’accès Wi-Fi d’un routeur comme celui intégré dans votre box ADSL/fibre (Freebox, Bbox…).
  1. Selon que la carte Wi-Fi de votre routeur gère une ou deux bandes de fréquence (2,4 GHz / 5 GHz), vous aurez une ou deux périphériques sans-fil dans OpenWrt, chacun d’eux étant associé à une interface sans-fil.
    Par défaut, OpenWrt crée une interface sans-fil de type Access Point (point d’accès) sur chaque périphérique sans-fil de votre routeur.
    Vous pouvez afficher vos périphériques sans-fil avec la commande wifi status :
    wifi status
    {
        "radio0": {
            "config": {
                "hwmode": "11a"
            },
            "interfaces": [
                {
                    "section": "default_radio0",
                    "ifname": "wlan0",
                    "config": {
                        "mode": "ap",
                        "ssid": "OpenWrt",
                        "encryption": "none",
                        "network": [
                            "lan"
                        ]
                    }
                }
            ]
        },
        "radio1": {
            "config": {
                "hwmode": "11g"
            },
            "interfaces": [
                {
                    "section": "default_radio1",
                    "ifname": "wlan1",
                    "config": {
                        "mode": "ap",
                        "ssid": "OpenWrt",
                        "encryption": "none",
                        "network": [
                            "lan"
                        ]
                    }
                }
            ]
        }
    }

    Ici, nous avons deux périphériques sans-fil radio0 et radio1, et deux interfaces sans-fil wlan0 et wlan1 de type Access Point associées. Notez le nom du périphérique sans-fil (radio) et celui de l’interface sans-fil (ifname) associée que vous souhaitez utiliser pour vous connecter au point d’accès Wi-Fi de votre box ADSL/fibre. Votre objectif est de choisir entre le périphérique qui gère la bande des 2,4 GHz (hwmode : 11g) ou celui des 5 GHz (hwmode : 11a).
    A titre d’exemple, je vais utiliser le périphérique sans-fil radio1 (5 GHz) et l’interface sans-fil wlan1 associée.

  2. Par défaut, les périphériques sans-fil sont désactivés. Afficher-les :
    uci show wireless | grep wifi-device
    wireless.radio0=wifi-device
    wireless.radio1=wifi-device

    Puis activez-les :

    uci set wireless.radio0.disabled=0
    uci set wireless.radio1.disabled=0
    uci commit wireless
    wifi up
  3. Pour recevoir une adresse IP via DHCP, il est nécessaire de créer une interface virtuelle wlan :
    uci set network.wlan=interface
    uci set network.wlan.proto=dhcp
    uci commit
  4. Pour protéger votre connexion Internet, ajoutez l’interface virtuelle wlan que nous venons de créer à la zone wan du pare-feu :
    uci add_list firewall.@zone[1].network='wlan'
    uci commit
  5. Scannez les réseaux Wi-Fi à proximité en spécifiant le nom de l’interface sans-fil que vous avez noté précédemment (ex. : wlan1) et repérez le point d’accès auquel vous souhaitez vous connecter (celui de votre box ADSL/fibre par exemple)  :
    iw dev wlan1 scan
    BSS XX:XX:XX:XX:XX:XX(on wlan1) -- associated
            TSF: 3340185577651 usec (38d, 15:49:45)
            freq: 2412
            beacon interval: 100 TUs
            capability: ESS (0x0411)
            signal: -65.00 dBm
            last seen: 190 ms ago
            Information elements from Probe Response frame:
            SSID: Bbox-XXXXXX
            RSN:     * Version: 1
                     * Group cipher: TKIP
                     * Pairwise ciphers: CCMP TKIP
                     * Authentication suites: PSK
                     * Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)

    Notez le BSSID et le SSID du point d’accès.

  6. Enfin, créez un réseau sans-fil en spécifiant le BSSID et le SSID de votre point d’accès Wi-Fi, l’interface virtuelle (wlan) et le périphérique sans-fil (radio1) :
    uci add wireless wifi-iface
    uci set wireless.@wifi-iface[-1].bssid=XX:XX:XX:XX:XX:XX
    uci set wireless.@wifi-iface[-1].device=radio1
    uci set wireless.@wifi-iface[-1].ssid=Bbox-XXXXXX
    uci set wireless.@wifi-iface[-1].encryption=psk2
    uci set wireless.@wifi-iface[-1].key=XXXXXXXXXX
    uci set wireless.@wifi-iface[-1].mode=sta
    uci set wireless.@wifi-iface[-1].network=wlan
    uci commit
  7. Redémarrez le service network :
    /etc/init.d/network restart
  8. Reconnectez-vous en SSH à votre routeur :
    ssh [email protected]
  9. Votre connexion Internet est opérationnelle ! Vérifiez avec un ping sur votre site Web favori 😉
    ping lecrabeinfo.net -c 4
    PING lecrabeinfo.net (213.32.22.96): 56 data bytes
    64 bytes from 213.32.22.96: seq=0 ttl=51 time=42.278 ms
    64 bytes from 213.32.22.96: seq=1 ttl=51 time=34.948 ms
    64 bytes from 213.32.22.96: seq=2 ttl=51 time=34.665 ms
    64 bytes from 213.32.22.96: seq=3 ttl=51 time=34.377 ms
    
    --- lecrabeinfo.net ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss
    round-trip min/avg/max = 34.377/36.567/42.278 ms

Via un modem LTE (4G)

Note : dans cette section, j’explique comment établir une connexion WWAN en utilisant le dongle USB LTE Huawei E3372 avec le protocole NCM.
  1. Insérez votre dongle Huawei E3372 sur un port USB de votre routeur.
  2. Vérifiez que les périphériques /dev/cdc-wdm0 et /dev/ttyUSB0 sont bien détectés :
    ls -l /dev/cdc-wdm0 /dev/ttyUSB0
    crw-------    1 root     root      180, 176 Jan 31 14:44 /dev/cdc-wdm0
    crw-------    1 root     root      188,   0 Jan 31 14:46 /dev/ttyUSB0

    Ainsi que l’interface réseau physique wwan0 :

    ip link show wwan0
    3: wwan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN qlen 1000
        link/ether 00:1e:10:1f:00:00 brd ff:ff:ff:ff:ff:ff
  3. Créez une interface virtuelle wwan en spécifiant entre autres le protocole (ncm), l’interface réseau physique (wwan0) et le port série du dongle Huawei E3372 (/dev/ttyUSB0) :
    uci set network.wwan=interface
    uci set network.wwan.proto='ncm'
    uci set network.wwan.device='/dev/ttyUSB0'
    uci set network.wwan.ifname='wwan0'
    uci set network.wwan.apn='free'
    uci set network.wwan.pincode='1234'
    uci set network.wwan.mode='preferlte'
    uci set network.wwan.delay='30'
    uci commit

    Modifiez les champs apn et pincode en fonction du nom de votre opérateur mobile et du code PIN de votre carte SIM.

  4. Pour protéger votre connexion Internet, ajoutez l’interface virtuelle wwan que nous venons de créer à la zone wan du pare-feu :
    uci add_list firewall.@zone[1].network='wwan'
    uci commit
  5. Redémarrez le système :
    reboot
  6. Patientez un moment, jusqu’à ce que le dongle USB Huawei E3372 affiche une LED cyan fixe, signifiant que la connexion au réseau cellulaire LTE (4G) est bien active.
  7. Reconnectez-vous en SSH à votre routeur :
    ssh [email protected]
  8. Votre connexion Internet est opérationnelle ! Vérifiez avec un ping sur votre site Web favori 😉
    ping lecrabeinfo.net -c 4
    PING lecrabeinfo.net (213.32.22.96): 56 data bytes
    64 bytes from 213.32.22.96: seq=0 ttl=51 time=42.278 ms
    64 bytes from 213.32.22.96: seq=1 ttl=51 time=34.948 ms
    64 bytes from 213.32.22.96: seq=2 ttl=51 time=34.665 ms
    64 bytes from 213.32.22.96: seq=3 ttl=51 time=34.377 ms
    
    --- lecrabeinfo.net ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss
    round-trip min/avg/max = 34.377/36.567/42.278 ms
  9. Installez le paquet luci-proto-ncm qui permet le support du protocole NCM dans l’interface LuCI :
    opkg update
    opkg install luci-proto-ncm

Multi-WAN

Si vous avez plusieurs interfaces réseau physiques connectées à Internet, comme ici :

  • wwan0 : connexion LTE (4G).
  • eth0 : connexion ADSL.
ip route | grep 'default'
default via 10.254.xx.xxx dev wwan0  src 10.254.xx.xxx
default via 192.168.1.254 dev eth0  src 192.168.1.97

Vous allez la possibilité d’utiliser une interface réseau plutôt qu’une autre pour la connexion Internet grâce la métrique.

Métrique (routage)

Un routeur possède une table de routage avec toutes les routes possibles. Par exemple, dans la capture d’écran ci-dessus, il y a deux routes : la route wan et la route wwan. Les métriques sont utilisées pour déterminer si une route doit être utilisée plutôt qu’une autre. La route avec la métrique la plus basse sera utilisée en priorité.

Avant de commencer, notez les interfaces virtuelles associées aux interfaces réseau physiques connectées à Internet :

uci show network | grep -E 'wwan0|eth0'
network.wan.ifname='eth0'
network.wan6.ifname='eth0'
network.wwan.ifname='wwan0'

Dans l’exemple ci-dessus :

  • L’interface réseau physique wwan0 est associée à l’interface virtuelle wwan (connexion LTE) ;
  • L’interface réseau physique eth0 est associée aux interfaces virtuelles wan et wan6 (connexion ADSL).

Pour me connecter à Internet, supposons que je veuille utiliser en priorité l’interface virtuelle wwan (connexion LTE) puis l’interface virtuelle wan (connexion ADSL). Pour cela, je vais définir une métrique de 10 pour l’interface wwan et une métrique de 20 pour l’interface wan. Cela se fait très simplement :

uci set network.wwan.metric=10
uci set network.wan.metric=20
uci commit
/etc/init.d/network restart

Pour savoir si mon interface virtuelle wwan est bien utilisée en priorité, je lance une commande curl en faisant une requête au serveur ipinfo.io :

opkg update
opkg install curl
curl ipinfo.io
{
  "ip": "37.xxx.xxx.xxx",
  "city": "Paris",
  "region": "Île-de-France",
  "country": "FR",
  "loc": "48.8628,2.3292",
  "org": "AS51207 Free Mobile SAS",
  "postal": "75001"
}

L’adresse IP et l’ISP correspondent bien à ceux de ma connexion LTE (4G), tout est bon ! 😉

Reconnexion automatique au réseau LTE (4G)

La connexion au réseau LTE (4G) peut s’interrompre sans prévenir. C’est pourquoi nous allons utiliser un script watchdog.sh qui testera la connexion Internet de l’interface wwan et qui la redémarrera si la connexion Internet est hors-service. Le script est disponible ici : watchdog.sh.

  1. Téléchargez le script watchdog.sh :
    cd /root
    wget https://gist.githubusercontent.com/dreamon11/dc35c659a594ee5e51d74d028e9ce988/raw/6e9a51a7070958adb1c045d92b6ea7049d940780/watchdog.sh
    chmod +x watchdog.sh
  2. Créez une tâche planifiée qui exécutera le script watchdog.sh toutes les minutes :
    crontab -l | { cat; echo "* * * * * /usr/bin/flock -n /tmp/watchdog.lockfile /root/watchdog.sh wwan"; } | crontab -
  3. Installez le paquet flock qui verrouillera le script watchdog.sh afin d’éviter qu’une nouvelle instance de ce script ne s’exécute si la précédente est toujours en cours d’exécution :
    opkg update
    opkg install flock
  4. Redémarrez le service cron :
    /etc/init.d/cron restart
  5. Un p’tit coup d’oeil dans les logs pour s’apercevoir que la tâche est bien exécutée, et que l’interface est bien redémarrée lorsque la connexion au réseau LTE (4G) est perdue :
    logread
    Sat Feb 17 23:40:00 2018 cron.info crond[8535]: USER root pid 8538 cmd /root/watchdog.sh wwan
    Sat Feb 17 23:41:32 2018 user.notice watchdog: Physical network interface 'wwan0' is down: restart interface 'wwan'
    Sat Feb 17 23:41:32 2018 daemon.notice netifd: wwan (8560): Stopping network wwan
    Sat Feb 17 23:41:33 2018 daemon.notice netifd: Interface 'wwan' is now down
    Sat Feb 17 23:41:33 2018 daemon.notice netifd: Interface 'wwan' is setting up now
    Sat Feb 17 23:42:05 2018 daemon.notice netifd: wwan (8604): sending -> AT
    Sat Feb 17 23:42:06 2018 daemon.notice netifd: wwan (8604): sending -> ATZ
    Sat Feb 17 23:42:07 2018 daemon.notice netifd: wwan (8604): sending -> ATQ0
    Sat Feb 17 23:42:07 2018 daemon.notice netifd: wwan (8604): sending -> ATV1
    Sat Feb 17 23:42:08 2018 daemon.notice netifd: wwan (8604): sending -> ATE1
    Sat Feb 17 23:42:09 2018 daemon.notice netifd: wwan (8604): sending -> ATS0=0
    Sat Feb 17 23:42:09 2018 daemon.notice netifd: wwan (8604): sending -> AT+CGDCONT=1,"IP","free"
    Sat Feb 17 23:42:11 2018 daemon.notice netifd: wwan (8604): SIM ready
    Sat Feb 17 23:42:11 2018 daemon.notice netifd: wwan (8604): PIN set successfully
    Sat Feb 17 23:42:12 2018 daemon.notice netifd: wwan (8604): sending -> AT^SYSCFGEX="030201",3fffffff,2,4,7fffffffffffffff,,
    Sat Feb 17 23:42:13 2018 daemon.notice netifd: wwan (8604): Starting network wwan
    Sat Feb 17 23:42:13 2018 daemon.notice netifd: wwan (8604): sending -> AT^NDISDUP=1,1,"free"
    Sat Feb 17 23:42:14 2018 daemon.notice netifd: wwan (8604): Setting up wwan0
    Sat Feb 17 23:42:14 2018 daemon.notice netifd: Interface 'wwan' is now up
    Sat Feb 17 23:42:14 2018 daemon.notice netifd: Network device 'wwan0' link is up
    Sat Feb 17 23:42:14 2018 daemon.notice netifd: Network alias 'wwan0' link is up

Mise à jour et installation des paquets sur OpenWrt

  1. Connectez-vous en SSH à votre routeur :
    ssh [email protected]
  2. Définissez un mot de passe pour l’utilisateut root :
    passwd
  3. Mettez à jour la liste des paquets du système :
    opkg update
  4. Installez les paquets que vous désirez, par exemple celui de l’interface graphique LuCI :
    opkg install luci
  5. Ouvrez une fenêtre de votre navigateur Web à l’adresse http://192.168.1.1/) :
  6. Admirez l’interface d’administration d’OpenWrt ! 😉

Ce guide s’achève ! Félicitations, cela n’aura pas été de tout repos 🙂

Nous verrons dans un prochain article comment configurer OpenWrt pour établir une connexion VPN chiffrée 😉 En attendant, profitez de votre routeur équipé du firmware OpenWrt !

618 utilisateurs actifs
Chargement en cours