136 lines
4.2 KiB
Markdown
136 lines
4.2 KiB
Markdown
Title: Wifi à la demande avec le vénérable Linksys WRT54G
|
|
Date: 2017-03-09 15:57
|
|
Category: sysadmin
|
|
Tags: OpenWRT, Wifi, réseau, pl-fr
|
|
Status: published
|
|
|
|
Dans le cadre de mon travail, il m'a été demandé de mettre en place pour un
|
|
centre d'animation un petit réseau wifi afin que les adhérents puissent se
|
|
connecter à Internet : deux ordinateurs fixe sous Debian et un point d'accès
|
|
Wifi. J'ai donc recyclé une vieille unité centrale pour en faire un petit
|
|
routeur proxy filtrant avec [ipfire][l_ipfire] et un vénérable [Linksys
|
|
WRT54G][l_wrt54g] qui traînait.
|
|
|
|
[l_ipfire]:http://www.ipfire.org/
|
|
[l_wrt54g]:https://wiki.openwrt.org/toh/linksys/wrt54g
|
|
|
|
Les postes sous Debian sont en accès libre toute la journée mais les animateurs
|
|
voulaient que le wifi soit activé certains jours de 14h à 18h et éventuellement
|
|
à la demande. Le WRT54G sert à la fois de switch réseau et de point d'accès
|
|
Wifi. Bien entendu il y a OpenWRT d'installé dessus avec le SSH d'activé (son
|
|
adresse est 10.0.0.250).
|
|
|
|
###Mise en place d'un script pour l'activation-désactivation du Wifi
|
|
|
|
La première étape est la création d'un script shell pour activer désactiver
|
|
l'interface wifi du Linksys. Connectons nous à notre Linksys
|
|
|
|
~~~
|
|
ssh root@10.0.0.250
|
|
~~~
|
|
|
|
Créons le fichier contenant le script, rendons-le exécutable et ouvrons-le avec vi.
|
|
|
|
~~~
|
|
touch /sbin/wtoggle.sh
|
|
chmod + x /sbin/wtoggle.sh
|
|
vi /sbin/wtoggle.sh
|
|
~~~
|
|
|
|
Il suffit maintenant de coller les commandes ci-dessous.
|
|
|
|
```bash
|
|
#!/bin/sh
|
|
|
|
device="wl0"
|
|
case $1 in
|
|
"disable")
|
|
wifi down $device
|
|
echo 0 > /proc/diag/led/ses_white
|
|
echo 1 > /proc/diag/led/ses_orange
|
|
echo 0 > /proc/diag/led/wlan
|
|
uci set wireless.$device.disabled=1
|
|
uci commit wireless
|
|
logger "Wifi disabled"
|
|
;;
|
|
"enable")
|
|
uci set wireless.$device.disabled=0
|
|
uci commit wireless
|
|
wifi up $device
|
|
echo 1 > /proc/diag/led/ses_white
|
|
echo 0 > /proc/diag/led/ses_orange
|
|
echo 2 > /proc/diag/led/wlan
|
|
logger "Wifi enabled"
|
|
;;
|
|
esac
|
|
```
|
|
|
|
Le script fait trois choses :
|
|
|
|
1. Activer / Désactiver le point d'accès Wifi
|
|
2. Allumer la diode SES en blanc / orange en fonction de l'état de la connexion
|
|
3. Activer / désactiver la diode WLAN
|
|
|
|
L'utilisation est simple : `wtoggle enable` pour activer le wifi et `wtoggle disable` pour le désactiver.
|
|
|
|
### Créer la tache cron pour activer le wifi à certaines heures
|
|
|
|
Il suffit d'ajouter les deux lignes suivantes au cron pour programmer la mise en
|
|
route du Wifi avec la commande ``crontab -e``
|
|
|
|
~~~
|
|
00 14 * * 1-6 wtoggle enable
|
|
00 18 * * 1-6 wtoggle disable
|
|
~~~
|
|
|
|
Le réseau Wifi est donc allumé du lundi au samedi de 14h à 18h. Mais sur Openwrt
|
|
le service cron n'est pas activé[^n_cron-openwrt]. Il faut donc le faire avec
|
|
les commandes[^n_openwrt-buttons]
|
|
|
|
~~~
|
|
/etc/init.d/cron start
|
|
/etc/init.d/cron enable
|
|
~~~
|
|
|
|
[^n_cron-openwrt]: voir sur la [documentation
|
|
d'openwrt](https://wiki.openwrt.org/doc/howto/cron#activating_cron)
|
|
|
|
### Activation / désactivation à la demande du Wifi
|
|
|
|
Il est parfois nécessaire d'allumer ou d'éteindre le wifi manuellement, pour ça
|
|
nous allons détourner le bouton SES du routeur (vous savez celui avec le logo
|
|
cisco dessus). si le Wifi est désactivé, une pression sur ce bouton l'activera
|
|
et une autre pression le désactivera à nouveau.
|
|
|
|
Créons un fichiers ``bouttons`` dans le répertoire ``/etc/hotswap.d/button/``
|
|
qui va contenir les commandes à effectuer lors de la pression d'un boutons sur
|
|
le Linksys
|
|
|
|
~~~
|
|
mkdir -p /etc/hotswap.d/button/
|
|
vi /etc/hotswap.d/button/buttons
|
|
~~~
|
|
|
|
Voici le contenu de ce fichier
|
|
|
|
```bash
|
|
#!/bin/sh
|
|
device="wl0"
|
|
if [ "$BUTTON" = "ses" ] && [ "$ACTION" = "pressed" ] ; then
|
|
case $(uci get wireless.$device.disabled) in
|
|
0)
|
|
/sbin/wtoggle.sh disable
|
|
;;
|
|
1)
|
|
/sbin/wtoggle.sh enable
|
|
;;
|
|
esac
|
|
fi
|
|
```
|
|
|
|
Une fois enregistré, le tout devrait fonctionner : le bouton SES pour allumer
|
|
/éteindre le wifi et la tâche cron pour le faire automatiquement en fonction des
|
|
heures d'ouvertures. Le voyant du logo Cisco servant aux animateurs à visualiser
|
|
rapidement si le réseau Wifi est actif ou non.
|
|
|
|
[^n_openwrt-buttons]:voir sur la [documentation d'openwrt](https://wiki.openwrt.org/doc/howto/hardware.button)
|