Description
OpenWRT est un système d’exploitation GNU/Linux ciblant les périphériques embarqués (typiquement des routeurs sans fils).
Ce n’est pas un projet monolitique , bien au contraire, c’est plus un framework fournissant les outils logiciels nécessaires afin de fournir un système de fichiers complet, de permettre la création de micrologiciels (en anglais : firmware) selon le matériel et tout autour une distribution complète qui permet à l’administrateur/utilisateur de la configurer “aux petits oignons” permettant différents usages utiles.
-
OpenWRT : v19.07.x
-
Le shell est le ash du projet Busybox.
-
L’éditeur par défaut est
vi
- si vous n’aimez pas, il est possible d’en installer d’autres, telnano
. -
Les fichiers de configuration se trouvent généralement dans
/etc/config/
et portent le nom du service à configurer. -
Les services sont fonctionnels à partir du répertoire
/etc/init.d/
et portent le nom du service ; ils ont pour options les classiques :disable
: désactiver un service - il ne redémarrera pas lors d’un (re)démarrage du routeur,enable
: activer un service - permet le démarrage du service lors du (re)démarrage du routeur,reload
: recharge la configuration du service,restart
: redémarre le service,start
: démarre le service,stop
: arrête le service.
Installation
Gestionnaire de paquets
Le gestionnaire de paquets est opkg
est intégré de base dans le système ;
hormis la
mise-à-jour 'one-shot' de plusieurs paquets
,
il a pour propos les différentes possibilités de gestion des paquets, à savoir
installation, configuration, suppression de paquets…
pour en savoir plus : $ opkg ?
Si vous avez installé l'interface d'administration **LuCI** , il est possible de gérer les paquets par le biais du menu ‘System’ > ‘Software’.
Install: LuCI
LuCI est l’interface web d’administration. Par défaut, elle n’est fonctionnelle que sur le protocole HTTP .
Installez le paquet avec le gestionnaire de paquets.
# opkg install luci
L’installation de LuCI installe plusieurs paquets, dont un serveur web minimaliste nommé uhttpd , le thème basé sur Bootstrap, et les dépendances nécessaires pour la gestion de l’administration (gestion des différents protocoles réseaux, du parefeu, etc.).
Pour installer la version supportant HTTPS - ce qui est préférable -, ce sera :
# opkg install luci-ssl
Install: Langue FR
Il est possible d’installer la langue française au besoin.
Retrouvez les différents paquets linguistiques :
- en mode console :
# opkg list | grep -E "luci-i18n-(.*)-fr"
- à-travers l’interface d’administration : menu ‘System’ > ‘Software’ puis dans le champ ‘Filter’, écrivez “luci-i18n-”.
N’installez pas tous les paquets disponibles, mais seuls ceux qui vous sont vraiment nécessaires, tels - peut-être - :
luci-i18n-base-fr
pour l’interface de base de LuCI.luci-i18n-firewall-fr
pour la partie parefeu
Configuration
root
La première ET la plus importante des premières modifications à faire est de changer le mot de passe de l’admin.
- en mode console, grâce à la commande
passwd
- par l’interface d’administration LuCI - si elle est installée - : menu ‘System’ > ‘Administration’, onglet ‘Router Password’ - onglet par défaut.
Réseaux
- La configuration des ports se fait, soit depuis :
- le fichier
/etc/config/network
, - l’interface d’administration LuCI, menu ‘Network’ > ‘Interfaces’.
- le fichier
Par défaut sont configurées les interfaces :
- LAN en mode bridge,
- WAN et WAN6
De plus, il est configuré deux VLAN , à partir du menu ‘Network’ > ‘Switch’, pour séparer logiciellement le LAN du WAN.
- Le service est accessible via :
/etc/init.d/network
.
Parefeu
- La configuration du parefeu se fait, soit depuis :
- le fichier
/etc/config/firewall
, - l’interface d’administration LuCI, menu ‘Network’ > ‘Firewall’.
- le fichier
Il est possible d’écrire directement des règles iptables à partir de l’onglet ‘Custom Rules’.
Son fichier se trouve être /etc/firewall.user
. C’est seulement dans celui-ci
où peut s’écrire directement des règles iptables ou ip6tables.
- Le service est accessible via :
/etc/init.d/firewall
.
dhcpd
Le serveur DHCP est dnsmasq, un serveur léger qui fait aussi office de résolveur DNS Relais (en anglais : DNS Forwarder) et fait partie du système de base. La pile IPv6 est assurée par le serveur odhcpd.
- La configuration du serveur dnsmasq peut se faire, soit par:
- le fichier
/etc/config/dhcp
- l’interface d’administration LuCI, menu ‘Network’ > ‘DHCP and DNS’.
- le fichier
- Les services
dnsmasq
etodhcpd
sont accessibles à partir du même répertoire d’initialisation/etc/init.d
. - Les fichiers d’enregistrement des baux DHCP sont, pour :
- dnsmasq :
/tmp/dhcp.leases
- odhcpd :
/tmp/hosts/odhcpd
- dnsmasq :
On ne peut fixer/enregistrer des baux DHCP au-travers de LuCI que pour IPv4.
Config: LuCI
- Le fichier de configuration de LuCI est :
/etc/config/luci
- évitez d'y toucher, à moins de savoir réellement ce que vous faîtes !
SSH
C’est le serveur dropbear - un serveur SSH, seulement v2, léger - qui fait office, par défaut dans le système de base. Il gère très bien les clés à courbes elliptiques, tel ed25519.
La première chose à faire du côté de votre client est d’ajouter dans votre configuration sécurisée , le support de :
Ciphers aes256-ctr
HostKeyAlgorithms ssh-rsa
MACs hmac-sha2-256
Retrouvez les différents codes d’erreurs liés à la fin de cet article sur SSH .
- Par le biais de l’interface web d’administration LuCI, choisissez le menu ‘System > Administration’, puis l’onglet “SSH Access”.
Puis paramétrez ainsi :
- Interface : choisissez lan
- Port : si vous laissez le port par défaut, pas besoin de le spécifier, sinon modifiez-le.
Par mesure de sécurité : laissez non cochées, les trois autres options que sont ‘Password Authentication’, ‘Allow root logins with password’ et ‘Gateway Ports’. Ainsi nous ne permettrons pas à l’identifiant root de se connecter, et à nul compte de pouvoir se connecter par mot-de-passe. Cela signifie qu’il faut ajouter une clé d’authentification SSH.
Il est aussi possible de créer un nouvel utilisateur SSH, en choisissant pour interface : ‘unspecified’, qui permettrait de créer ledit utilisateur…
uhttpd
Bien que léger, voire minimaliste uhttpd est LE serveur web, par défaut non installé sur le firmware initram, qui fait fonctionner l’interface web LuCI .
- La configuration du serveur se fait via :
/etc/config/uhttpd
- Le service est accessible via
/etc/init.d/uhttpd
Par défaut, le serveur uhttpd écoute sur toutes les interfaces, partout !
Pensez à minima, par principe de sécurité, à changer les lignes list listen_http
pour cibler seulement l’adresse IP de votre LAN, tel que :
list listen_http 192.168.1.1:80
- (bien sûr, si votre adresse IP est celle-là, sinon changez-la selon vos paramétrages) -
idem, pour le port HTTPS, voire pour l’IPv6, si vous gérez !
Toujours par principe de sécurité, il est recommandé de le démarrer qu’en cas de besoin de configuration et de l’arrêter une fois terminée. C’est pourquoi, vous pouvez faire allégrement :
# /etc/init.d/uhttpd disable
ainsi il ne redémarrera pas lors de (re)démarrage du routeur.# /etc/init.d/uhttpd start
etstop
pour réciproquement le démarrer et l’arrêter au besoin.
Avantage : Cela permet de libérer les ressources de puissance machine.
Cela sous-entend bien-sûr une connexion SSH active !
Restauration
La restauration d’une configuration précédente peut se faire par :
- l’interface d’administration, menu ‘System’ > ‘Backup / Flash Firmware’ puis
dans la section Restore soit vous cliquez sur le bouton :
- [ Perform reset ] qui aura pour propos de remettre à la configuration initiale du firmware - nécessite que celui-ci soit de type “squashfs”
- [ Upload archive… ] pour restaurer une configuration précédemment archivée.
Sauvegarde
La sauvegarde de toutes configurations du routeur peut se faire par :
- l’interface d’administration, menu ‘System’ > ‘Backup / Flash Firmware’ puis dans la section Backup cliquez sur le bouton [ Generate archive ].
Upgrade
La mise à jour du firmware peut se faire :
- en mode console - ce qui semble préférable - par le biais de la commande
sysupgrade
après avoir téléchargé le firmware adéquat. - par l’interface d’administration, menu ‘System’ > ‘Backup / Flash Firmware’ puis dans la section Flash new firmware image cliquez sur le bouton [ Flash image ].
Il faut être conscient que lors de la mise à jour du firmware, toute configuration personnalisée hors système sera purgée.
Mieux vaut suivre ce processus de sauvegarde correcte :
OpenWRT : Gérer correctement le processus de mise à niveau (sysupgrade)
Documentation
- Le wiki du projet OpenWRT : https://openwrt.org/