---
categories: ['OpenWRT','Système']
date: 2020-02-20T21:37:23+01:00
description: "Présentation du projet OpenWRT"
draft: false
tags: ['OpenWRT']
title: "OpenWRT : Présentation du projet"
---
## 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](https://www.busybox.net/BusyBox.html)**.
* L'éditeur par défaut est `vi` - *si vous n'aimez pas, il est possible d'en {{< anchor installer "gestionnaire-de-paquets" >}}
d'autres, tel `nano`.*
* 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 {{< inside "sys:openwrt:opkg-upgrade" "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 {{< anchor "installé l'interface d'administration **LuCI**" "install-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 {{< abbr HTTP "HyperText Transfer Protocol" >}}.
Installez le paquet avec le gestionnaire de paquets.
`# opkg install luci`
L'installation de **LuCI** installe plusieurs paquets, dont un serveur web minimaliste
nommé **{{< anchor uhttpd uhttpd >}}**, le thème basé sur **[Bootstrap][7]**, 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 {{< abbr HTTPS "HyperText Transfer Protocol Secure" >}} -
*ce qui est préférable* -, ce sera :
`# opkg install luci-ssl`
{{< note warning >}}ATTENTION : vous devez impérativement avoir une ROM Flash >= 8 Mo !{{}}
#### 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*.
{{< img a="OpenWRT :: Administration Système : Mot de Pass Root" s="openwrt/System-Administration-SSH-Router-Password-min.png" w="256" >}}
{{< note warning >}}Il est fortement recommandé d'éviter la connexion {{< anchor SSH ssh >}} pour root,
prenez le temps de {{< inside "sys:openwrt:sudo" "configurer un nouvel utilisateur" >}} et
de lui donner les droits pour assumer correctement l'administration.{{}}
### Réseaux
* La configuration des ports se fait, soit depuis :
* le fichier `/etc/config/network`,
* l'interface d'administration **LuCI**, menu 'Network' > 'Interfaces'.
Par défaut sont configurées les interfaces :
* **LAN** en mode bridge,
* **WAN** et **WAN6**
De plus, il est configuré deux {{< abbr VLAN "Virtual Local Area Network" >}},
à partir du menu 'Network' > 'Switch', pour séparer logiciellement le LAN du WAN.
* Le service est accessible via : `/etc/init.d/network`.
{{< note tip >}}Il peut être intéressant de {{< inside "sys:openwrt:switch-lan-wan" "basculer LAN sur le port 0 et WAN sur le port 4" >}}. {{}}
### Parefeu
* La configuration du parefeu se fait, soit depuis :
* le fichier `/etc/config/firewall`,
* l'interface d'administration **LuCI**, menu 'Network' > 'Firewall'.
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 {{< abbr DHCP "Dynamic Host Control Protocol" >}} 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'.
* Les services `dnsmasq` et `odhcpd` 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`
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` -
{{< color red >}}évitez d'y toucher, à moins de savoir réellement ce que vous faîtes !{{}}
{{< note tip >}}Il est recommandable de modifier l'accès à l'interface web, certainement
par le biais d'un tunnel {{< inside "sys:openwrt:ssh" SSH >}}… {{}}
### 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.
{{< note tip >}}
La première chose à faire du côté de votre client est d'ajouter dans
votre {{< inside2 l="sec:ssh:configuration-securisee" t="configuration sécurisée" a="message-authentication-codes" >}},
le support de :
* `Ciphers aes256-ctr`
* `HostKeyAlgorithms ssh-rsa`
* `MACs hmac-sha2-256`
Retrouvez les {{< inside2 a="dépannage" l="sys:openwrt:ssh-tunnel" t="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".
{{< img a="OpenWRT :: Administration Système : Accès SSH" s="openwrt/System-Administration-SSH-Access-min.png" w="256" >}}
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.
{{< note tip >}}Le seul moment où 'Password Authentication' et 'Allow root logins with password'
seront autorisées, donc cochées, et le temps de définir un {{< inside "sys:openwrt:sudo" "nouvel utilisateur" >}}…
**Si ce n'est pas déjà fait, c'est le moment de le faire !**
{{}}
Il est aussi possible de créer un nouvel utilisateur SSH, en choisissant pour interface : 'unspecified',
qui permettrait de créer ledit utilisateur…
{{< note tip >}}Appréciez cette {{< inside "sys:openwrt:ssh-tunnel" "méthode" >}} pour sécuriser LuCI.{{}}
### 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 **{{< anchor LuCI "install-luci" >}}**.
* La configuration du serveur se fait via : `/etc/config/uhttpd`
* Le service est accessible via `/etc/init.d/uhttpd`
{{< note warning >}}
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` et `stop` 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 {{< anchor SSH 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.
{{< img a="OpenWRT :: Administration Système : Restauration" s="openwrt/System-Administration-Flash-Restore-min.png" w="256" >}}
### 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 ].
{{< img a="OpenWRT :: Administration Système : Sauvegarde" s="openwrt/System-Administration-Flash-Backup-min.png" w="256" >}}
### 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 ].
{{< img a="OpenWRT :: Administration Système : Mise à jour Firmware" s="openwrt/System-Administration-Flash-Firmware-min.png" w="256" >}}
{{< note warning >}}
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 :
{{< inside "sys/openwrt/sysupgrade" >}}
{{}}
---
## Documentation
* Le wiki du projet OpenWRT : https://openwrt.org/
---
[7]: https://getbootstrap.com/
---