Modifier dhclient pour réessayer de récupérer l'adresse IP

10

Il s'avère que Raspberry Pi n'essaie pas très fort d'obtenir une adresse IP avec DHCP, lors d'une panne de courant, mon RPI a démarré plus rapidement que le serveur DHCP, et n'a jamais obtenu d'adresse IP. Dans une telle situation, le rpi semble être démarré, mais il n'obtient pas d'adresse IP, et je ne vois jamais de demande dhcp jusqu'à ce que je le redémarre.

dhclient est exécuté comme tel:

dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0

Je ne trouve aucun moyen de modifier les arguments en dhclient, l'argument -1 pourrait être le coupable. Comment puis-je faire une nouvelle tentative de demande DHCP pour Raspberrypi jusqu'à ce qu'il reçoive une réponse?

Edit: il s'agit de la distribution Raspbian "Wheezy".

non
la source
1
Même problème avec le wifi. Si le routeur Wifi est activé au démarrage, tout se passe bien, même avec le redémarrage du routeur. Mais si le routeur est éteint au démarrage de Raspberry, il ne reçoit jamais d'adresse IP. Cordialement
J'ai également le même problème. Cependant, je ne sais pas comment le dhclient est exécuté. Y a-t-il une configuration ou dois-je faire quelque chose pour cela?
Kangkan

Réponses:

7

Supprimez le -1de vos arguments de ligne de commande, puis modifiez les valeurs timeoutet à votre convenance. Vous pouvez consulter la page de manuel ( ) pour plus de détails.retry/etc/dhclient.confman dhclient.conf

Munkeh
la source
Le problème est, comme je l'ai dit, je ne trouve aucun moyen de modifier la ligne de commande de dhclient, il semble que par magie il soit démarré au démarrage par quelque chose dans le paquet ifupdown .deb pendant que quelque chose analyse les interfaces / etc / network / interfaces
nos
@nos Vous devez trouver le script d'initialisation réseau. Je ne me souviens plus où c'est.
Alex Chamberlain
@Alex Chamberlain Il s'avère que la ligne de commande pour démarrer dhclient est codée en dur dans le binaire / sbin / ifup. Je recherche donc des solutions alternatives à ce stade.
nos
Désolé pour ça. Quoi qu'il en soit, quelle distribution est-ce? Étrange, ils avaient du code dur en binaire. Côté solution, vous pouvez simplement ajouter quelques lignes à rc.local pour tuer le processus dhclient existant, puis démarrer le vôtre avec des
arguments
Editet the post - J'utilise rasbpian
nos
1

Quel est le contenu de vos / etc / network / interfaces?

Je suppose qu'il y a auto eth0 car il interroge DHCP au démarrage.

Et si vous changez cela en allow_hotplug eth0? Cela devrait réagir aux modifications de l'interface (câble inséré / retiré), si je comprends bien.

(Tout cela n'est que ma supposition éclairée).

Le Gruffalo
la source
Cette astuce fonctionne très bien pour moi: elle permet un branchement à chaud et accélère le démarrage. Mais il doit être écrit "allow-hotplug eth0".
user27164
0

Il existe une solution de contournement donnée ici par Jeroen: https://bugs.launchpad.net/raspbian/+bug/1125066

J'ai configuré la solution de contournement et redémarré - semble correct pour le moment. Confirmera si le problème est résolu dans une mise à jour après un certain temps de test.

Voici la solution:

Une solution de contournement consiste à créer un script wrapper en renommant / sbin / dhclient en / sbin / dhclient-bin et mais le texte ci-dessous dans / sbin / dhclient et ensuite le modifie en 777:

#!/bin/sh
/sbin/dhclient-bin -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0
Andy Boura
la source