[[https://openwrt.org/|OpenWRT]] (Open Wireless Router) est une distribution Linux minimaliste pour matériel embarqué, historiquement développée pour des routeurs WIFI [[https://fr.wikipedia.org/wiki/WRT54G|Linksys WRT54G]], puis étendue sur [[https://openwrt.org/toh/start|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 ----------------------------------------------------- [[informatique:hardware:tplink_wdr3600|Installation sur un Tp-Link WDR3600]] ======Gestion des paquets (opkg)====== On peut installer des paquets avec le [[http://wiki.openwrt.org/doc/techref/opkg|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 [[https://openwrt.org/docs/guide-user/advanced/uci_extras|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
'', qui permettent respectivement de valider la syntaxe et de voir les différences entre 2 confs. uci validate uci diff dhcp =====Liens utiles===== * https://openwrt.org/docs/guide-user/base-system/uci ======Problèmes====== =====(dnsmasq) leases file in read-only===== dnsmasq[1]: cannot open or create lease file /tmp/dhcp.leases: Read-only file system [[https://github.com/openwrt/openwrt/issues/9064|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