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).

Gustaw
źródło
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
Larssend
źródło
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)

akom
źródło
-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

Ruban Savvy
źródło
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