OpenWrt : flash, config réseau et hardening complet
Guide technique pour flasher OpenWrt 25.12.0 sur un routeur, configurer VLANs, DNS, firewall, VPN WireGuard et sécuriser l'ensemble.
OpenWrt : flash, config réseau et hardening complet
Ce guide couvre l'installation d'OpenWrt 25.12.0 sur un routeur compatible, la configuration réseau avancée, et le durcissement sécurité. On part du firmware d'usine pour arriver à un routeur production-ready.
Pré-requis
- Routeur présent dans le Table of Hardware (https://openwrt.org/toh/start) avec statut Supported
- Connexion Ethernet filaire entre le PC et un port LAN du routeur
- Le modèle exact ET la version hardware (étiquette physique sous l'appareil)
- Firmware factory OpenWrt 25.12.0 téléchargé depuis firmware-selector.openwrt.org
- Accès SSH depuis le poste client (PuTTY sous Windows, terminal natif sous Linux/macOS)
1. Flash du firmware
Méthode standard (interface web du fabricant)
Accédez à l'interface d'administration du routeur :
## La plupart des routeurs répondent sur l'une de ces adresses
curl -sI http://192.168.1.1 || curl -sI http://192.168.0.1Dans l'interface du fabricant, trouvez la section firmware update. Uploadez le fichier .bin factory correspondant au modèle exact. Le routeur flashe et redémarre.
Méthode TFTP (pour routeurs sans interface web ou en recovery)
Si le routeur est en mode recovery (voyant clignotant après reset maintenu 10s au boot) :
## Configurez une IP statique sur votre interface Ethernet
## Linux
sudo ip addr flush dev eth0
sudo ip addr add 192.168.1.2/24 dev eth0
sudo ip link set eth0 up
## macOS
sudo ifconfig en0 192.168.1.2 netmask 255.255.255.0 up
## Envoyez le firmware via TFTP
## L'adresse du routeur en mode recovery dépend du fabricant
## TP-Link : 192.168.0.66 ou 192.168.1.1
## Netgear : 192.168.1.1
atftp —option "mode octet" —put —local-file openwrt-25.12.0-*-factory.bin 192.168.0.66Attendez 3 à 5 minutes sans toucher à rien. Le routeur redémarre sur OpenWrt.
2. Premier accès et sécurisation SSH
Par défaut, OpenWrt expose SSH (Dropbear) et l'interface web LuCI sur le LAN. Le mot de passe root est vide.
## Connexion SSH initiale
ssh root@192.168.1.1
## Mot de passe : [vide, tapez Entrée]Premier geste : définir un mot de passe root.
passwdPuis passez en authentification par clé SSH uniquement :
## Depuis votre poste client, copiez votre clé publique
ssh-copy-id root@192.168.1.1
## Sur le routeur : désactivez l'authentification par mot de passe
uci set dropbear.@dropbear[0].PasswordAuth='off'
uci set dropbear.@dropbear[0].RootPasswordAuth='off'
uci commit dropbear
/etc/init.d/dropbear restart⚠️ Gardez votre session SSH ouverte pendant cette opération. Si la clé ne fonctionne pas, vous êtes enfermé dehors.
Changez le port SSH par défaut :
uci set dropbear.@dropbear[0].Port='2222'
uci commit dropbear
/etc/init.d/dropbear restart3. Configuration réseau
Interface WAN
## DHCP (derrière une box FAI)
uci set network.wan.proto='dhcp'
## PPPoE (connexion directe FAI)
uci set network.wan.proto='pppoe'
uci set network.wan.username='votre-identifiant-fai@fai.fr'
uci set network.wan.password='votre-mot-de-passe'
## IP statique
uci set network.wan.proto='static'
uci set network.wan.ipaddr='203.0.113.10'
uci set network.wan.netmask='255.255.255.0'
uci set network.wan.gateway='203.0.113.1'
uci set network.wan.dns='1.1.1.1 9.9.9.9'
uci commit network
/etc/init.d/network restartDNS sécurisé (DNS over TLS)
OpenWrt utilise dnsmasq par défaut. Pour du DNS chiffré, installez stubby :
opkg update
opkg install stubby
## Configurez dnsmasq pour forwarder vers stubby (127.0.0.1:5453)
uci set dhcp.@dnsmasq[0].noresolv='1'
uci delete dhcp.@dnsmasq[0].server
uci add_list dhcp.@dnsmasq[0].server='127.0.0.1#5453'
uci commit dhcp
/etc/init.d/stubby enable
/etc/init.d/stubby start
/etc/init.d/dnsmasq restartStubby est préconfiguré pour utiliser Cloudflare (1.1.1.1) et Quad9 (9.9.9.9) en DoT.
Wi-Fi
Par défaut, les radios Wi-Fi sont désactivées. Activez-les et configurez :
## Radio 0 (2.4 GHz)
uci set wireless.radio0.disabled='0'
uci set wireless.radio0.country='FR'
uci set wireless.radio0.channel='auto'
uci set wireless.default_radio0.ssid='MonReseau'
uci set wireless.default_radio0.encryption='sae-mixed'
uci set wireless.default_radio0.key='VotreMotDePasseWiFi-Robuste-2026'
## Radio 1 (5 GHz)
uci set wireless.radio1.disabled='0'
uci set wireless.radio1.country='FR'
uci set wireless.radio1.channel='auto'
uci set wireless.radio1.htmode='VHT80' # ou HE80 pour Wi-Fi 6
uci set wireless.default_radio1.ssid='MonReseau'
uci set wireless.default_radio1.encryption='sae-mixed'
uci set wireless.default_radio1.key='VotreMotDePasseWiFi-Robuste-2026'
uci commit wireless
wifi reloadL'encryption sae-mixed permet WPA3 avec fallback WPA2 pour les appareils anciens. Si tous vos appareils supportent WPA3, utilisez sae seul.
VLAN pour réseau invité
Créez un réseau isolé pour les invités :
## Interface guest
uci set network.guest=interface
uci set network.guest.proto='static'
uci set network.guest.ipaddr='192.168.2.1'
uci set network.guest.netmask='255.255.255.0'
## DHCP pour le réseau guest
uci set dhcp.guest=dhcp
uci set dhcp.guest.interface='guest'
uci set dhcp.guest.start='100'
uci set dhcp.guest.limit='50'
uci set dhcp.guest.leasetime='2h'
## SSID invité sur la radio 2.4 GHz
uci set wireless.wifinet_guest=wifi-iface
uci set wireless.wifinet_guest.device='radio0'
uci set wireless.wifinet_guest.mode='ap'
uci set wireless.wifinet_guest.network='guest'
uci set wireless.wifinet_guest.ssid='MonReseau-Invites'
uci set wireless.wifinet_guest.encryption='sae-mixed'
uci set wireless.wifinet_guest.key='InviteWiFi2026'
uci set wireless.wifinet_guest.isolate='1'
uci commit network
uci commit dhcp
uci commit wireless
/etc/init.d/network restart
wifi reload4. Firewall
Zone guest isolée
## Zone firewall pour le réseau invité
uci add firewall zone
uci set firewall.@zone[-1].name='guest'
uci set firewall.@zone[-1].network='guest'
uci set firewall.@zone[-1].input='REJECT'
uci set firewall.@zone[-1].output='ACCEPT'
uci set firewall.@zone[-1].forward='REJECT'
## Les invités peuvent accéder à internet mais pas au LAN
uci add firewall forwarding
uci set firewall.@forwarding[-1].src='guest'
uci set firewall.@forwarding[-1].dest='wan'
## Autoriser DHCP et DNS pour les invités
uci add firewall rule
uci set firewall.@rule[-1].name='Guest-DNS'
uci set firewall.@rule[-1].src='guest'
uci set firewall.@rule[-1].dest_port='53'
uci set firewall.@rule[-1].proto='tcpudp'
uci set firewall.@rule[-1].target='ACCEPT'
uci add firewall rule
uci set firewall.@rule[-1].name='Guest-DHCP'
uci set firewall.@rule[-1].src='guest'
uci set firewall.@rule[-1].dest_port='67-68'
uci set firewall.@rule[-1].proto='udp'
uci set firewall.@rule[-1].target='ACCEPT'
uci commit firewall
/etc/init.d/firewall restartBloquer le trafic WAN entrant (déjà fait par défaut, vérification)
## Vérifier que la zone WAN bloque bien tout en entrée
uci show firewall | grep 'wan.*input'
## Doit afficher : firewall.@zone[1].input='REJECT'5. VPN WireGuard
Installation et configuration d'un tunnel WireGuard :
opkg update
opkg install wireguard-tools luci-proto-wireguard
## Générer les clés
umask 077
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
SERVER_PRIVKEY=$(cat /etc/wireguard/server_private.key)
SERVER_PUBKEY=$(cat /etc/wireguard/server_public.key)
## Interface WireGuard
uci set network.wg0=interface
uci set network.wg0.proto='wireguard'
uci set network.wg0.private_key="$SERVER_PRIVKEY"
uci set network.wg0.listen_port='51820'
uci add_list network.wg0.addresses='10.0.0.1/24'
## Ajouter un peer (client)
## Générez les clés client sur le poste client avec : wg genkey | tee private.key | wg pubkey > public.key
CLIENT_PUBKEY='CollerLaClePubliqueDuClient'
uci add network wireguard_wg0
uci set network.@wireguard_wg0[-1].public_key="$CLIENT_PUBKEY"
uci set network.@wireguard_wg0[-1].allowed_ips='10.0.0.2/32'
uci set network.@wireguard_wg0[-1].description='PC-Portable'
uci commit network
/etc/init.d/network restart
## Ouvrir le port WireGuard dans le firewall
uci add firewall rule
uci set firewall.@rule[-1].name='Allow-WireGuard'
uci set firewall.@rule[-1].src='wan'
uci set firewall.@rule[-1].dest_port='51820'
uci set firewall.@rule[-1].proto='udp'
uci set firewall.@rule[-1].target='ACCEPT'
## Ajouter wg0 à la zone LAN (pour accéder au réseau local via VPN)
uci add_list firewall.@zone[0].network='wg0'
uci commit firewall
/etc/init.d/firewall restartConfiguration client (fichier .conf pour WireGuard) :
[Interface]
PrivateKey = CLE_PRIVEE_CLIENT
Address = 10.0.0.2/24
DNS = 192.168.1.1
[Peer]
PublicKey = CLE_PUBLIQUE_SERVEUR
Endpoint = VOTRE_IP_PUBLIQUE:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 256. Hardening sécurité
Désactiver les services inutiles
## Désactiver le serveur HTTP sur le WAN (ne devrait pas être exposé, mais vérifiez)
uci show uhttpd
## LuCI ne doit écouter que sur le LAN
## Désactiver IPv6 si non utilisé
uci set network.wan6.auto='0'
uci set network.lan.ipv6='0'
uci set dhcp.lan.dhcpv6='disabled'
uci set dhcp.lan.ra='disabled'
uci commit
## Désactiver UPnP (faille de sécurité fréquente)
/etc/init.d/miniupnpd stop 2>/dev/null
/etc/init.d/miniupnpd disable 2>/dev/nullActiver les mises à jour automatiques de la liste de paquets
## Cron pour mettre à jour la liste de paquets chaque semaine
echo '0 4 * * 1 opkg update' >> /etc/crontabs/root
/etc/init.d/cron restartMonitoring basique
opkg install vnstat2 luci-app-vnstat2
/etc/init.d/vnstat enable
/etc/init.d/vnstat startvnStat fournit des statistiques de bande passante par interface, accessibles via LuCI.
7. Script post-install automatisé
Pour reproduire cette configuration rapidement sur un autre routeur :
#!/bin/sh
## openwrt-postinstall.sh
## À exécuter après le flash d'OpenWrt 25.12.0
## Usage : scp openwrt-postinstall.sh root@192.168.1.1:/tmp/ && ssh root@192.168.1.1 'sh /tmp/openwrt-postinstall.sh'
set -e
echo "[1/6] Mise à jour des paquets..."
opkg update
echo "[2/6] Installation des paquets essentiels..."
opkg install stubby wireguard-tools luci-proto-wireguard vnstat2 luci-app-vnstat2
echo "[3/6] Configuration DNS over TLS..."
uci set dhcp.@dnsmasq[0].noresolv='1'
uci delete dhcp.@dnsmasq[0].server 2>/dev/null
uci add_list dhcp.@dnsmasq[0].server='127.0.0.1#5453'
uci commit dhcp
/etc/init.d/stubby enable
/etc/init.d/stubby start
echo "[4/6] Activation Wi-Fi..."
uci set wireless.radio0.disabled='0'
uci set wireless.radio0.country='FR'
uci set wireless.radio1.disabled='0'
uci set wireless.radio1.country='FR'
uci commit wireless
echo "[5/6] Désactivation UPnP et IPv6..."
/etc/init.d/miniupnpd stop 2>/dev/null
/etc/init.d/miniupnpd disable 2>/dev/null
uci set network.wan6.auto='0'
uci commit network
echo "[6/6] Activation monitoring..."
/etc/init.d/vnstat enable
/etc/init.d/vnstat start
echo "Configuration terminée. Redémarrage réseau..."
/etc/init.d/network restart
wifi reload
echo "Done. Changez le SSID et le mot de passe Wi-Fi manuellement."
echo "N'oubliez pas : passwd pour définir le mot de passe root."8. Dépannage
Le routeur ne répond plus après le flash
Maintenez le bouton reset enfoncé pendant 10 secondes pendant que le routeur démarre. Cela déclenche le mode recovery/failsafe selon le modèle.
En mode failsafe OpenWrt :
ssh root@192.168.1.1
## Le mode failsafe monte le système en lecture seule
mount_root
firstboot
reboot -fErreur "image too large" ou "bad magic"
Vous avez téléchargé le mauvais firmware. Revérifiez le modèle exact et la version hardware. Un TP-Link Archer C7 v2 et v5 utilisent des chipsets différents.
Wi-Fi instable ou faible portée
## Vérifier la puissance d'émission
uci show wireless | grep txpower
## Régler la puissance (valeur en dBm, max dépend de la réglementation)
uci set wireless.radio0.txpower='20'
uci set wireless.radio1.txpower='23'
uci commit wireless
wifi reload
## Vérifier les logs Wi-Fi
logread | grep hostapdSSH inaccessible après changement de port
Si vous avez changé le port SSH et perdu l'accès, connectez-vous via LuCI (interface web) et modifiez la configuration dans System → Administration.
Espace disque insuffisant pour les paquets
Routeurs avec peu de flash (8 Mo) : privilégiez une installation minimale. Si vous avez un port USB, montez une clé USB comme stockage supplémentaire :
opkg update
opkg install block-mount kmod-fs-ext4 kmod-usb-storage e2fsprogs
## Formater la clé USB en ext4
mkfs.ext4 /dev/sda1
## Monter sur /overlay pour étendre le stockage
block detect | uci import fstab
uci set fstab.@mount[0].target='/overlay'
uci set fstab.@mount[0].enabled='1'
uci commit fstab
rebootSources
- Documentation officielle OpenWrt : https://openwrt.org/docs/start
- Table of Hardware : https://openwrt.org/toh/start
- Firmware Selector : https://firmware-selector.openwrt.org/
- Wiki WireGuard sur OpenWrt : https://openwrt.org/docs/guide-user/services/vpn/wireguard/start
- Release notes 25.12.0 : https://openwrt.org/releases/25.12/start
À lire aussi
Kodi media center : configuration avancée et automatisation
Configurez Kodi en profondeur : base de données centralisée, transcodage, DLNA, accès distant sécurisé et scripts d'automatisation.
Créer son media center avec Kodi : le guide pas à pas
Transformez votre PC, Raspberry Pi ou TV en un vrai media center avec Kodi. Installation, configuration et premiers pas pour les débutants.
Flasher OpenWrt sur son routeur : le guide pas à pas
Remplacez le firmware de votre routeur par OpenWrt pour débloquer des fonctions cachées. Guide complet pour débutants, étape par étape.