Bonjour,
Comme je viens de faire le tutoriel pour quelqu'un d'autre, j'en profite pour le partager ici pour ceux que ça pourrait aider.
ATTENTION, cela nécessite un routeur perso, et un accès à ce routeur, et toute manipulation sur le routeur peut causer des problèmes si les commandes sont mal entrées, ou si les versions sont différentes, etc… Donc à vos risques et périls.
Pourquoi faire cela ?
Dans mon cas, à chaque fois que mon routeur prenait une adresse WAN via DHCP, il relançait son propre serveur DHCP (côté LAN), provoquant une micro interruption et forçant les clients de mon LAN à se reconnecter, etc… Donc micro coupures, nouveaux baux, etc… De plus, mon routeur ne renouvelait pas en demi-bail (2:30 minutes) mais à la fin du bail (5 minutes).
Il est normal pour un client DHCP sur un routeur de lancer un script post-connexion, mais pour des baux courts, ça peut donc créer des problèmes.
Ma parade a été de paramétrer mon routeur en statique (IP fixe), et de créer une tâche répétée (cronjob) pour envoyer la requête DHCP attendue par le relais de l'OI pour maintenir l'autorisation de l'IP (les fameuses ACL).
Pour envoyer la requête, j'utilise le client udhcpc ; comme sur mon routeur la version de base n'est pas très complète et ancienne, j'ai utilisé la version proposée par entware, mais j'aurais probablement pu utiliser la version de base avec moins d'options.
Cela peut se faire avec d'autres clients DHCP, il faut adapter.
La tâche cron doit être ajoutée dans un crontab. Cela varie selon les routeurs (crontab, cru, etc…)
Voici ma tâche cron :
*/3 * * * * udhcpc -q -n -t 17 -T 10 -i [INTERFACE] -s /dev/null -r [ADRESSE IP] >/dev/null 2>&1
*/3 * * * * indique que ça doit être répété toutes les 3 minutes
udhcpc ... c'est la commande lancée par cron toutes les 3 minutes, suivie de ses arguments.
-q pour qu'udhcpc se ferme après avoir fait son job (inutile de le garder en mémoire)
-n pour qu'udhcpc se ferme s'il n'y arrive pas (on ne veut pas qu'il insiste, car comme c'est répété toutes les 3 minutes, on ne veut pas plusieurs exemplaires en même temps).
-t 17 signifie que l'on veut qu'udhcpc essaye 17 fois sans réponse du serveur avant de fermer (ce qu'on demande avec -n)
-T 10 signifie que l'on veut que chaque tentative (les 17) prenne 10 secondes. Donc en cas d'échec des tentatives de connexion (coupure ou DHCP défaillant chez OI/K-Net), udhcpc se fermera au bout d'un peu plus de 170 secondes. Ce qui nous convient puisque 3 minutes c'est 180 secondes et donc la nouvelle instance continuera d'essayer pendant les 170 prochaine secondes…
-i [INTERFACE] indique à udhcpc d'utiliser cette interface ; [INTERFACE] est à remplacer par l'interface WAN (côté ONT) du routeur (brwan chez Netgear, eth0 chez Asus, etc…)
-s /dev/null empêche udhcpc d'utiliser le script de configuration post-connexion (on ne veut surtout pas qu'il lance ce script, puisque le routeur est en IP fixe).
-r [IP] c'est pour demander cette adresse IP spécifiquement… C'est probablement inutile, car de toute façon, le serveur DHCP n'attribuera que celle associée à la MAC, mais ça ne mange pas de pain. Donc [IP] est à remplacer par l'IP fixe publique évidemment.
Enfin >/dev/null 2>&1 c'est pour que la commande ne retourne rien, comme elle est dans un cron, inutile qu'elle retourne quoi que ce soit en message.
Voilà, une fois le cronjob en place, il faut passer le routeur en statique :
Donc côté WAN, au lieu de DHCP c'est fixe ou statique, il faut renseigner l'IP fixe fournie par K-Net, le masque de sous-réseau, et enfin la passerelle. Il faut donc connaître/chercher ces informations avant.
Après, il faut penser que le cron peut ne pas survivre un reboot ou une mise-à-jour du firmware, donc ça demande un peu d'expertise et d'esprit d'aventure, d'où mon avertissement en rouge au début.
Voilà, si ça peut aider…