Table of Contents

OpenWRT (Open Wireless Router) est une distribution Linux minimaliste pour matériel embarqué, historiquement développée pour des routeurs WIFI Linksys WRT54G, puis étendue sur nombre de routeurs (WIFI/grand public on non), qui ajoute de nombreuses fonctionnalités par rapport aux firmwares propriétaires installés par défaut sur ces matériels.

# exemple de sign-in banner :
  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 CHAOS CALMER (15.05)
 -----------------------------------------------------
  * 1 1/2 oz Gin            Shake with a glassful
  * 1/4 oz Triple Sec       of broken ice and pour
  * 3/4 oz Lime Juice       unstrained into a goblet.
  * 1 1/2 oz Orange Juice
  * 1 tsp. Grenadine Syrup
 -----------------------------------------------------

Installation sur un Tp-Link WDR3600

Gestion des paquets (opkg)

On peut installer des paquets avec le gestionnaire opkg intégré ; pour installer tcpdump par exemple :

opkg update
opkg list | grep tcpdump
 tcpdump - 4.5.1-4 - Network monitoring and data acquisition tool
 tcpdump-mini - 4.5.1-4 - Network monitoring and data acquisition tool (minimal version)
opkg install tcpdump

Pour mettre à jour les paquets upgradables :

opkg update
opkg list-upgradable | cut -f1 -d' ' | xargs -r opkg upgrade

Configurer le rsyslog

On peut configurer l'envoie des messages de log à partir de la webUI, via le menu Sytem/Sytem puis l'onglet Logging. Il suffit de préciser l'adresse IP du serveur syslog distant dans “External system log server”, et de définir le “Log output level” à Debug.

Cliquer ensuite sur “Save & Apply”, ce qui, en fait, va juste sauvegarder la conf (on peut le vérifier en CLI en tapant uci show system.@system[0]).

UCI

UCI (Unified Configuration Interface) est la commande qui permet d'interagir avec la configuration d'OpenWRT. Cet outil permet d'unifier/centraliser la configuration du routeur et est utilisé depuis les versions Kamikaze.

On peut afficher la configuration sous plusieurs formats :

# format natif, programmable
uci show system
system.@system[0]=system
system.@system[0].cronloglevel='8'
system.@system[0].zonename='Europe/Paris'
system.@system[0].timezone='CET-1CEST,M3.5.0,M10.5.0/3'
system.@system[0].hostname='har'
 
# paramètre précis
uci get system.@system[0].zonename
Europe/Paris
 
# format lisible (human-readable)
uci export system
config system
        option cronloglevel '8'
        option zonename 'Europe/Paris'
        option timezone 'CET-1CEST,M3.5.0,M10.5.0/3'
        option hostname 'har'

uci changes permet d'afficher les modifications encore non appliquées ; uci commit permet de sauvegarder ces modifs, et reload_config permet de le appliquer.

Exemple de création d'une nouvelle section :

uci show sectionperso
uci import sectionperso < /dev/null
uci set sectionperso.myname=masectionperso
uci add sectionperso blah
uci commit
uci show sectionperso
sectionperso.@blah[0]=blah

UCI extras

Pour éviter les erreurs de configuration, installer les UCI extras :

opkg update
opkg install diffutils
uclient-fetch -O uci-extras.sh "https://openwrt.org/_export/code/docs/guide-user/advanced/uci_extras?codeblock=0"
. ./uci-extras.sh

Cela permet d'ajouter les commandes uci validate et uci diff <section>, qui permettent respectivement de valider la syntaxe et de voir les différences entre 2 confs.

uci validate
uci diff dhcp

Liens utiles

Problèmes

(dnsmasq) leases file in read-only

dnsmasq[1]: cannot open or create lease file /tmp/dhcp.leases: Read-only file system

Soucis avec le paquet proc-ujail ; en modifiant l'emplacement du fichier de leases cela refonctionne :

touch /var/run/dnsmasq/dhcp.leases
uci set dhcp.@dnsmasq[0].leasefile='/var/run/dnsmasq/dhcp.leases'
service dnsmasq restart