Jak zobaczyć, co robi klient DHCP?


14
  • Czy klient dhcp w systemie Linux zapisuje jakieś dzienniki?
  • Jeśli nie, czy można włączyć dzienniki i jak to zrobić?
  • Jeśli zapisuje dzienniki, gdzie można je znaleźć?
  • Jak wygląda typowy dziennik klienta dhcp podczas uzyskiwania adresów IP i serwerów nazw z serwera DHCP?
  • Gdzie mogę znaleźć kod źródłowy klienta DHCP?

W przypadku istotnych różnic między Linuxami: Interesuje mnie Debian 8.1 (domyślna minimalna instalacja amd64).


1
Musisz być bardziej szczegółowy niż „klient dhcp w systemie Linux”. Istnieje wiele różnych klientów dhcp dla systemu Linux i wszystkie logują się na różne sposoby. Prawdopodobnie jest domyślny dla Debiana 8.1, chociaż nie pamiętam, co to jest.
qasdfdsaq

Konsorcjum systemów internetowych Klient DHCP 4.3.1 Copyright 2004-2014 Konsorcjum systemów internetowych. Wszelkie prawa zastrzeżone. Aby uzyskać informacje, odwiedź stronę isc.org/software/dhcp
Gustave

Odpowiedzi:


7

Klient DHCP ISC jest zwykle wywoływany dhclientw większości dystrybucji Linuksa. Od man dhclient:

Klient zwykle nie drukuje danych wyjściowych podczas sekwencji uruchamiania. Można go wysyłać w celu wyświetlenia pełnych komunikatów wyświetlających zdarzenia sekwencji startowej, dopóki nie uzyska adresu, podając argument wiersza polecenia -v. W obu przypadkach klient rejestruje wiadomości za pomocą narzędzia syslog (3).

Istnieją dwa możliwe sposoby odczytu dziennika systemu. W większości systemów, które używają systemd, musisz używać journalctl, podczas gdy cat /var/log/syslogdotyczy to systemów, które nadal używają tradycyjnego systemu init.

Dlatego jeśli Twój system korzysta z funkcji rejestrowania systemd, możesz użyć tej opcji, journalctl | grep -Ei 'dhcp'aby uzyskać dzienniki klienta DHCP. W przeciwnym razie wpisz cat /var/log/syslog | grep -Ei 'dhcp'.

Oto jak zwykle wygląda mój dziennik klienta DHCP:

Jul 20 14:17:39 trueclient1 NetworkManager[2622]: <info> (wlan1): canceled DHCP transaction, DHCP client pid 3325
Jul 20 14:17:42 trueclient1 NetworkManager[2622]: <info> Activation (wlan1) Beginning DHCPv4 transaction (timeout in 45 seconds)
Jul 20 14:17:42 trueclient1 dhclient: Internet Systems Consortium DHCP Client 4.2.2
Jul 20 14:17:42 trueclient1 dhclient: For info, please visit https://www.isc.org/software/dhcp/
Jul 20 14:17:42 trueclient1 NetworkManager[2622]: <info> (wlan1): DHCPv4 state changed nbi -> preinit
Jul 20 14:17:42 trueclient1 dhclient: DHCPREQUEST on wlan1 to 255.255.255.255 port 67
Jul 20 14:17:42 trueclient1 dhclient: DHCPACK from 10.8.8.1
Jul 20 14:17:42 trueclient1 NetworkManager[2622]: <info> (wlan1): DHCPv4 state changed preinit -> reboot

2
W dzienniku Debian 8.1 działa, na Ubuntu-14.04.2-server wpisy znajdują się w / var / log / syslog. Dzięki. Ale: jest tylko kilka wpisów, na przykład rejestrowany jest tylko adres IP, a serwery DNS nie. Czy można skonfigurować więcej pełnych danych wyjściowych?
Gustave

3

Hacky (ale skuteczny) sposób debugowania dhclient na wielu platformach Linux to włączenie śledzenia bash w / sbin / dhclient-script .

dhclient uruchamia ten skrypt na większości wariantów systemu operacyjnego, które sprawdziłem (RedHat, Debian itp.).

Po prostu dodanie -xdo shebang (pierwsza linia) w tym skrypcie powinno umożliwić śledzenie każdej linii do konsoli, np .:

#!/bin/bash -x

Następnie możesz na przykład uruchomić

dhclient -r #release lease
dhclient #re-acquire lease

Powinieneś zobaczyć wiele wyników, nie tylko ze skryptu dhclient, ale ze wszystkich .dskryptów zawartych w / etc / dhcp *.

Dane wyjściowe śledzenia powinny pozwolić ci zorientować się, co się dzieje i jakie decyzje podejmuje kod (odwołaj się do samego skryptu, patrząc na dane wyjściowe).

Zwykle można wydedukować dane wejściowe (np. Parametry, w tym adres IP, BRAMA, itp.) Skrypt otrzymany z tego wyjścia, ale jeśli nie, możesz tymczasowo dodać coś takiego do skryptu tuż przed wyjściem:

   env | logger -t dhclient-debugging

Następnie sprawdź swój dziennik po uruchomieniu dhclient (/ var / log / messages lub / var / log / syslog)


-3

Proszę znaleźć odpowiedź w linii.

  • Czy klient dhcp w systemie Linux zapisuje jakieś dzienniki?


    Tak.

  • Jeśli nie, czy można włączyć dzienniki i jak to zrobić?


 1. Edit dhcpd.conf and add this line
  log-facility local7;

 2. Edit syslog.conf and append 
  local7.* /var/log/dhcpd.log


  • Jeśli zapisuje dzienniki, gdzie można je znaleźć?

    /var/log/dhcpd.log


  • Jak wygląda typowy dziennik klienta dhcp podczas uzyskiwania adresów IP i serwerów nazw z serwera DHCP?


galaxy dhcpd: DHCPDISCOVER od 00: 0d: 62: d7: a0: 12 przez eth0
galaxy dhcpd: DHCPOFFER na 192.168.1.5 do 00: 0d: 62: d7: a0: 12 przez eth0
galaxy dhcpd: DHCPREQUEST dla 192.168.1.5 (192.168 .1.1) od 00: 0d: 62: d7: a0: 12 przez
galaktykę eth0 dhcpd: DHCPACK od 192.168.1.5 do 00: 0d: 62: d7: a0: 12 przez eth0

  • Gdzie mogę znaleźć kod źródłowy klienta DHCP?


    Link 1
    Link 2


2
OP mówi o kliencie DHCP . DHCPD to demon serwera DHCP.
Larssend

Wydaje się, że w moim systemie nie ma pliku o nazwie dhcpd.conf. Istnieje plik /etc/dhcp/dhclient.conf. Nie ma pliku syslog.conf, ale plik /etc/rsyslog.conf. Dokonałem zmian w konfiguracji tych plików, zrestartowałem rsyslog, zamknąłem eth0, włączyłem ponownie. Ale nie pojawia się plik dziennika. Otrzymuję komunikaty DHCP na konsoli. Nawet po ponownym uruchomieniu komputera nie otrzymuję komunikatów dziennika.
Gustave
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.