Jak sprawić, aby dhclient zapomniał o ostatniej dzierżawie DHCP?

28

Usiłuję uzyskać dzierżawę DHCP z zimnym startem i zerowym stanem, co oznacza wymuszenie dhclientpełnego procesu wykrywania i konfiguracji (DHCPDISCOVER – DHCPOFFER – DHCPREQUEST – DHCPACK w przeciwieństwie do skróconego cyklu DHCPREQUEST – DHCPACK, który wykorzystuje zapamiętany cykl adres). Potrzebuję tego do debugowania problemu z konfiguracją sieci.

Próbowałem:

  • płukanie dzierżawy bieżącej z dhclient -r, rozłączanie bieżącego połączenia Network Managera;
  • zabijanie resztek dhclienti dnsmasqprocesów;
  • /var/lib/dhcp/katalog czyszczenia , który rzekomo zawiera bazę danych dzierżawy klienta;
  • sudo restart network-manager.

Ale nawet po tych krokach widzę w dziennikach DHCPDISCOVER natychmiast po nim DHCPREQUEST jakiegoś wciąż zapamiętanego adresu.

Najwyraźniej system operacyjny przechowuje adres w jakiś sposób i zabrakło mi pomysłów. Jakaś pomoc ze strony społeczności?

ulidtko
źródło
Czy to rozgryzłeś? Mam też ten sam problem. Istnieją również pliki dzierżawy w NetworkManager. Też je usunąłem. Z jakiegoś powodu nadal odbiera stary adres.
gudge

Odpowiedzi:

18

To załatwiło sprawę (dla eth0, uciekaj od sudo su):

dhclient -r -v eth0 && rm /var/lib/dhcp/dhclient.* ; dhclient -v eth0
Anton Kiselev
źródło
1
Kiedy to zrobiłem, dostałem nową dzierżawę, ale wydaje się, że adres IP nie był używany przez system. Jeśli spróbuję pingować nazwę lub powiązany adres IP, nie powiedzie się. Jeśli ifconfigsprawdzę aktualny adres, mogę to ustalić.
TafT
Zmiana rmudziału czyni to praca dla mnie (bez tego przed dzierżawy użyto: dhclient -r -v eth0 && rm /var/lib/dhcp/dhclient* ; dhclient -v eth0)
davejagoda
6

Program klienta DHCP zapisuje dzierżawę do pliku. Wystarczy usunąć plik i ponownie uruchomić menedżera sieci.

/var/lib/dhcp/dhclient.leases

W tym miejscu są przechowywane umowy najmu na moim komputerze.

thefourtheye
źródło
2

To, co widzisz, nie oznacza, że ​​urządzenie zapamiętuje adres IP. W syslog widzisz ODKRYJ ZAPYTAJ OFERTĘ POTWIERDŹ, jednak nie jest to kolejność, w jakiej się stało. Faktycznie poszło ODKRYJ OFERTĘ ZAPYTAJ POTWIERDŹ, aby potwierdzić, że możesz wąchać ruch między komputerem a serwerem DHCP. Wysłałeś ODKRYJ serwer odesłał OFERTĘ i dostałeś adres IP z OFERTY na ZAPYTANIE

Jednak wszystko zrobiłeś dobrze, kiedy zrobiłeś „dhclient -r” dhclient wyśle ​​komunikat RELEASE emisji pojedynczej, a niektórzy dostawcy usług internetowych akceptują tylko pakiety multiemisji na swoim serwerze DHCP, więc RELEASE nigdy nie dotarło, jeśli chodzi o serwer, twoja dzierżawa jest nadal ważne, więc zwróciło ci to samo IP w OFERCIE.

Matt
źródło
Dziękuję za to! Nigdy nie zrozumiałem, dlaczego dziennik zawsze pokazuje ODKRYJ, ZAPYTAJ, OFERTĘ, POTWIERDŹ; ponieważ sekwencja nigdy nie miała sensu. Świadomość, że tak naprawdę nie jest tak naprawdę, pozwala mi znaleźć coś dla siebie. Tak więc moja maszyna uzyskuje DHCPOFFERadres IP, którego nie chcę, a następnie mówi „OK”, ale jeśli zmuszę go do próby zdobycia czegokolwiek innego, wtedy serwer powie DHCPNACK, i w końcu nie będzie żadnej sieci. Domyślnie rezerwacja na serwerze dotyczy niewłaściwego adresu MAC.
Auspex
Jedyne, co mogę myśleć, możesz spróbować to zmienić „hwaddress ether xx: xx: xx: xx: xx: xx” w / etc / network / interfaces, jeśli twój dostawca usług internetowych pozwala ci zmienić mac bez konieczności dzwonienia i powiadamiania je, a modem kablowy nie zastępuje swojego komputera Mac w locie, serwer powinien Cię widzieć jako kogoś nowego i dać ci wolną dzierżawę adresu IP.
Matt
Problemem było to, że był dając mi wolne IP. I próbowałem zmusić go, aby dał mi ten, który miał być zarezerwowany, ponieważ zewnętrzny DNS wskazywał na ten! Wysłałem więc administratorowi sieci rzeczywisty adres MAC i zapytałem, czy naprawdę rezerwuje adres IP dla tego adresu MAC.
Auspex
1

Zwykle dhclient -rpowinien załatwić sprawę; ale jeśli to nie zadziała, znalazłem rozwiązanie tutaj :

+ Odnów adres IP jeden raz:

Uwaga: w tym przykładzie użyjemy interfejsu eth0. Interfejs musi być skonfigurowany dla DHCP jako działający.

  • Otwórz terminal i zrób sudo surootowanie.
  • Wpisz, ifconfigaby wyświetlić bieżący adres IP otrzymany z DHCP.
  • Wpisz, dhcpcd -kaby wysłać odpowiednie sygnały do ​​dhcpcd (może być konieczne zainstalowanie dhcpcd przez wykonanie apt-get install dhcpcd).
  • Teraz przywróć interfejs, pisząc ifup eth0.
  • Wpisz, ifconfigaby wyświetlić nowy adres IP.

Istnieje również sekcja dotycząca odnawiania adresu IP za każdym razem, ale opis dotyczył dystrybucji opartych na RPM (w przeciwieństwie do dystrybucji opartych na Debianie, takich jak Ubuntu).

Mam nadzieję, że to pomoże :)

Seyed Mohammad
źródło