Description
Transformer son routeur sous OpenWRT en point d’accès (répéteur) est assez simple en soit ; cela va impacter principalement trois des fichiers du système :
Configuration
Il est important de partir sur une base d’OpenWRT fraîchement installée, voire de réinitialiser les paramètres en mode usine par défaut.
La première chose à faire est de connecter physiquement par cable réseau le routeur qui sera répéteur wifi au routeur principal, puis ensuite de modifier la configuration du répéteur wifi. Ainsi, c’est le serveur DHCP du routeur principal qui enverra les paquets nécessaires pour permettre la connexion réseau wifi par le biais du point d’accès.
Comme bien souvent, sous OpenWRT, il est possible de le faire de manières différentes, en éditant en mode CLI les fichiers concernés, ou de passer par l’interface LUCI.
Cet article se focalise sur la manière CLI.
CLI
network
Editez en premier le fichier /etc/config/network pour que la configuration de
l’interface lan soit le futur point d’accès dans votre réseau actuel, tel que
pour l’exemple :
config interface 'lan'
    option device 'br-lan'
    option proto 'static'
    option ipaddr '192.168.1.3'
    option netmask '255.255.255.0'
#    option ip6assign '60'
    option gateway '192.168.1.1'
    list dns '192.168.1.1'
La commande uci nous permet de la modifier directement :
uci batch << EOF
    set network.lan.dns='192.168.1.1'
    set network.lan.ipaddr='192.168.1.3'
    set network.lan.netmask='255.255.255.0'
    set network.lan.gateway='192.168.1.1'
    set network.lan.proto='static'
EOF
uci commit
wireless
Maintenant il faut éditer le fichier /etc/config/wireless la ou les sections
wifi-device et wifi-iface pour changer les paramètres SSID, type de chiffrement,
passphrase nécessaire, le code pays, puis pour finir par activer le module radio.
Voici pour l’exemple sur un routeur Xiaomi AX3000T, qui comporte deux modules radio :
# cat /etc/config/wireless
config wifi-device 'radio0'
    option type 'mac80211'
    option path 'platform/soc/18000000.wifi'
    option channel '1'
    option band '2g'
    option htmode 'HT20'
    option country 'FR'
    option cell_density '0'
config wifi-device 'radio1'
    option type 'mac80211'
    option path 'platform/soc/18000000.wifi+1'
    option channel '36'
    option band '5g'
    option htmode 'HE80'
    option country 'FR'
    option cell_density '0'
config wifi-iface 'wifinet0'
    option device 'radio0'
    option mode 'ap'
    option ssid '***'
    option encryption 'sae-mixed'
    option dtim_period '3'
    option key '***'
#   option ieee80211r '1'
#   option mobility_domain '4772'
    option ft_over_ds '0'
    option network 'lan'
config wifi-iface 'wifinet1'
    option device 'radio1'
    option mode 'ap'
    option ssid '***'
    option encryption 'sae'
    option dtim_period '3'
    option key '***'
#   option ieee80211r '1'
#   option mobility_domain '4772'
    option ft_over_ds '0'
    option wpa_disable_eapol_key_retries '1'
    option network 'lan'
- 
Remarquez dans les deux sections wifi-devicel’option de pays paramétrée pour la france :option country 'FR'.
- 
Les deux sections wifi-ifaceconcernant chacun des deux modules radio sont bien paramétrées enoption mode 'ap'et cible bien le réseau lan :option network 'lan'.- Modifiez les option ssid,option encryptionetoption keyselon les identifiants wifi du routeur Wifi principal, ainsi que l’algorythme de chiffrement utilisé et la clé paramétrée.
 
- Modifiez les 
- 
Ici dans l’exemple, la section wifi-ifacedu moduleradio0est configurée pour utiliser le chiffrement WPA2/WPA3 PSK, SAE (CCMP), soitoption encryption 'sae-mixed', ce qui permet à des appareils un peu plus vieux ou nécessitant absolument l’usage de la bande 2G, tout en gardant un chiffrement WPA2 assez sécurisé, et en permettant que les périphériques wifi capables de se connecter en WPA3 choisiront ce chiffrement offert par défaut, alors que celle du moduleradio1est configurée pour n’utiliser que le chiffrement WPA3.
La commande uci permet de modifier juste le nécessaire :
uci batch << EOF
    set.wireless.wifi_device[0].country='FR'
    set.wireless.wifi_device[1].country='FR'
    set.wireless.wifi_iface[0].mode='ap'
    set.wireless.wifi_iface[1].mode='ap'
    set.wireless.wifi_iface[0].network='lan'
    set.wireless.wifi_iface[1].network='lan'
    set.wireless.wifi_iface[0].encryption='sae-mixed'
    set.wireless.wifi_iface[1].encryption='sae'
    set wireless.wifi_iface[0].ssid='Votre_SSID'
    set.wireless.wifi_iface[1].ssid='Votre_SSID'
    set wireless.wifi_iface[0].key='Votre_Passphrase'
    set.wireless.wifi_iface[1].key='Votre_Passphrase'
EOF
uci commit
DHCP
Il est critique de désactiver l’utilisation du serveur DHCP interne au point d’accès, pour deux raisons :
- s’assurer que seul le serveur DHCP du routeur principal envoie les trames nécessaires à la connexion des périphériques wifi
- lors des mises-à-jours du point d’accès, le serveur DHCP du point d’accès va être réactivé !
- Désactivez le serveur DHCP du point d’accès se fait, par le biais de LUCI, en cliquant sur le menu System > Startup puis de cliquer sur le bouton [ Enable ] relatif à dnsmaq (normalement en ligne 19) pour le désactiver puis appuyer sur le bouton [ Stop ].
- Modifiez le fichier /etc/config/dhcppour ajouter l’option suivanteoption ignore '1'dans la sectionconfig dhcp 'lan'; supprimez aussi toutes les options relatives à IPv6 !
Exemple :
config dhcp 'lan'
    option interface 'lan'
    option start '100'
    option limit '150'
    option leasetime '12h'
    option ignore '1'
    option dhcpv4 'disabled'
    option dhcpv6 'disabled'
    option ndp 'disabled'
    option ra 'disabled'
L’utilisation de l’option ignore activée est le seul moyen actuel de permettre
à ce que le routeur répéteur n’utilise absolument que les paquets envoyés par le
serveur DHCP du routeur principal, même si son propre serveur DHCP est actif
(ce qui sera malheureusement le cas lors des mises-à-jours d’OpenWRT).
L’utilisation de la commande uci :
uci batch << EOF
    set dhcp.lan.ignore='1'
EOF
uci commit
# Attention à bien assimiler qu'au prochain `sysupgrade`, le service sera à nouveau activé :
service dnsmasq stop
service dnsmasq disable
Maintenant que ces différentes configurations ont été faites, le plus simple reste de démarrer le répéteur et de profitez de l’usage du wifi.
WAN → LAN
Transformer le port WAN en port LAN est possible.
Par défaut, les ports WAN et WAN6 sont configurés dans OpenWRT ; il faut donc
supprimer les configurations relatives dans le fichier /etc/config/network
puis ajouter l’interface wan au pont br-lan, tel que :
config device
    option name 'br-lan'
    option type 'bridge'
    list ports 'lan1'
    list ports 'lan2'
    list ports 'lan3'
    list ports 'lan4'
    list ports 'wan'
Et supprimez dans le même fichier les informations relatives à WAN / WAN6 :
config interface 'wan'
    option device 'wan'
    option proto 'dhcp'
config interface 'wan6'
    option device 'wan'
    option proto 'dhcpv6'
Parfois certains matériels sont capricieux avec l’utilisation de WAN en tant que LAN. Dans certaines circonstances, les performances réseaux peuvent diminuer lors du transfert entre l’interface LAN et WAN, voire s’effondrer. C’est souvent le cas pour les routeurs logiciellement optimisés pour le routage.
Si malheureusement, une telle baisse de performance s’illustre dans votre cas,
le seul reméde est de garder l’interface WAN hors du pont et séparée !
Dans ce cas, il faut restaurer le fichier nertwork.
Par le biais d’uci :
uci batch << EOF
    set network.@device[0].ports='lan2' 'lan3' 'lan4' 'wan'
    set network.wan.disabled='1'
    set network.wan6.disabled='1'
EOF
uci commit
TL;DP
À vous de modifier selon votre matériel, le résumé ci-dessous - pour mieux comprendre de quoi il s’agit, soit vous lisez l’ensemble de l’article, soit vous allez sur le documentation officielle !
uci batch << EOF
    set network.lan.dns='192.168.1.1'
    set network.lan.ipaddr='192.168.1.3'
    set network.lan.netmask='255.255.255.0'
    set network.lan.gateway='192.168.1.1'
    set network.lan.proto='static'
    set.wireless.wifi_device[0].country='FR'
    set.wireless.wifi_device[1].country='FR'
    set.wireless.wifi_iface[0].mode='ap'
    set.wireless.wifi_iface[1].mode='ap'
    set.wireless.wifi_iface[0].network='lan'
    set.wireless.wifi_iface[1].network='lan'
    set.wireless.wifi_iface[0].encryption='sae-mixed'
    set.wireless.wifi_iface[1].encryption='sae'
    set wireless.wifi_iface[0].ssid='Votre_SSID'
    set.wireless.wifi_iface[1].ssid='Votre_SSID'
    set wireless.wifi_iface[0].key='Votre_Passphrase'
    set.wireless.wifi_iface[1].key='Votre_Passphrase'
    set dhcp.lan.ignore='1'
    set dhcp.lan.dhcpv4='disabled'
    set dhcp.lan.dhcpv6='disabled'
    set dhcp.lan.ndp='disabled'
    set dhcp.lan.ra='disabled'
    set network.@device[0].ports='lan2' 'lan3' 'lan4' 'wan'
    set network.wan.disabled='1'
    set network.wan6.disabled='1'
EOF
uci commit
Remerciement
Je tiens à remercier @salim/jdh.net pour ses judicieuses remarques à-propos d’uci !
Documentation
- Le guide actuel, en anglais, se trouve sur : https://openwrt.org/docs/guide-user/network/wifi/wifiextenders/bridgedap
uci set dhcp.lan.dhcpv4=‘disabled’ uci commit