Zmień dhclient, aby ponowić pobieranie adresu IP


10

Okazuje się, że Raspberry Pi nie bardzo stara się uzyskać adres IP za pomocą dhcp, podczas awarii zasilania moje rpi uruchomiło się szybciej niż serwer dhcp i nigdy nie otrzymało adresu IP. W takiej sytuacji rpi wydaje się być uruchomione, ale nie otrzymuje adresu IP i nigdy nie widzę z niego żądania dhcp, dopóki nie uruchomię go ponownie.

Program dhclient jest uruchamiany jako taki:

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

Nie mogę znaleźć sposobu na zmianę argumentów na dhclient, argument -1 może być przyczyną. Jak mogę zmusić moje Raspberrypi do ponawiania próśb DHCP, dopóki nie otrzyma odpowiedzi?

Edycja: dotyczy Raspbian „wheezy”.


1
Ten sam problem z Wi-Fi. Jeśli router Wi-Fi jest włączony podczas uruchamiania, wszystko działa poprawnie, nawet po ponownym uruchomieniu routera. Ale jeśli router jest wyłączony podczas uruchamiania malinowego, nigdy nie otrzymuje adresu IP. Pozdrawiam

Ja też mam ten sam problem. Nie wiem jednak, jak działa dhclient. Czy jest jakaś konfiguracja czy muszę coś z tym zrobić?
Kangkan

Odpowiedzi:


7

Usuń -1z argumentów wiersza poleceń, a następnie edytuj wartości timeouti według własnych upodobań. Możesz zajrzeć na stronę man ( ) po więcej szczegółów.retry/etc/dhclient.confman dhclient.conf


Problem polega na tym, że, jak już powiedziano, nie mogę znaleźć żadnego sposobu na zmianę wiersza poleceń dhclient, wydaje się, że magicznie jakoś można go uruchomić przy rozruchu przez coś w pakiecie .deb ifupdown, gdy coś analizuje / etc / network / interfaces
nos

@nos Musisz znaleźć skrypt inicjujący sieć. Nie pamiętam, gdzie to jest pod ręką.
Alex Chamberlain

@Alex Chamberlain Okazuje się, że linia poleceń do uruchomienia dhclient jest na stałe zapisana w pliku binarnym / sbin / ifup. W tym momencie szukam alternatywnych rozwiązań.
nos

Przepraszam za to. W każdym razie, co to za dystrybucja? Dziwne, że zapisali ciężko kod w pliku binarnym. Jeśli chodzi o rozwiązanie, możesz po prostu dodać kilka wierszy do pliku rc.local, aby zabić istniejący proces dhclient, a następnie uruchomić własny z niestandardowymi argumentami itp.
Munkeh

Edytuj post - używam rasbpian
nos

1

Jaka jest zawartość twojego / etc / network / interfaces?

Zakładam, że istnieje auto eth0, ponieważ wysyła zapytanie do DHCP podczas uruchamiania.

Co jeśli zmienisz to na allow_hotplug eth0? To powinno zareagować na zmiany interfejsu (kabel włożony / wyjęty), jeśli dobrze to rozumiem.

(Wszystko to tylko moje wykształcone przypuszczenie).


Ta wskazówka działa dla mnie bardzo dobrze: pozwala na podłączenie na gorąco i przyspiesza czas uruchamiania. Ale musi być napisany jako „allow-hotplug eth0”.
user27164

0

Istnieje obejście podane tutaj przez Jeroen: https://bugs.launchpad.net/raspbian/+bug/1125066

Skonfigurowałem obejście i uruchomiłem ponownie - w tej chwili wydaje się być w porządku. Potwierdzi, czy problem został rozwiązany w aktualizacji po testowaniu przez pewien czas.

Oto obejście:

Obejściem tego problemu jest utworzenie skryptu opakowania przez zmianę nazwy / sbin / dhclient na / sbin / dhclient-bin, ale tekst poniżej w / sbin / dhclient, a następnie chmod go na 777:

#!/bin/sh
/sbin/dhclient-bin -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.