This is an old revision of the document!
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
Installation de paquets
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
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