Wireshark - DHCP

Z SOISK systemy operacyjne i sieci komputerowe
Przejdź do nawigacji Przejdź do wyszukiwania


DHCP - trochę teorii

DHCP (ang. Dynamic Host Configuration Protocol – protokół dynamicznego konfigurowania hostów) – protokół komunikacyjny umożliwiający hostom uzyskanie od serwera danych konfiguracyjnych, np. adresu IP hosta, adresu IP bramy sieciowej, adresu serwera DNS, maski podsieci. Protokół DHCP jest zdefiniowany w RFC 2131 i jest następcą BOOTP. DHCP został opublikowany jako standard w roku 1993.

W kolejnej generacji protokołu IP, czyli IPv6, jako integralną część dodano nową wersję DHCP, czyli DHCPv6. Jego specyfikacja została opisana w RFC 3315.

W sieci opartej na protokole TCP/IP każdy komputer ma co najmniej jeden adres IP i jedną maskę podsieci; dzięki temu może się komunikować z innymi urządzeniami w sieci.

Komunikaty

  • DHCPDISCOVER – zlokalizowanie serwerów
  • DHCPOFFER – przesyłanie parametrów
  • DHCPREQUEST – żądanie przydzielenia używanych parametrów
  • DHCPACK – potwierdzenie przydziału parametrów
  • DHCPNAK – odmowa przydziału parametrów
  • DHCPDECLINE – wskazanie że adres sieciowy jest już używany
  • DHCPRELEASE – zwolnienie adresu
  • DHCPINFORM – żądanie przydziału parametrów (bez adresu IP)

Nagłówek DHCP

00 – 07 08 – 15 16 – 23 24 – 31
operacja typ sprzętu długość adresu sprzętowego liczba skoków
xid (identyfikator transakcji)
liczba sekund flagi
adres IP klienta
przydzielony adres IP klienta
adres IP serwera
adres IP bramki (routera)
adres sprzętowy klienta (16 oktetów)
nazwa serwera (64 oktety)
plik startowy (128 oktetów)
opcje producenta (długość zmienna)
Operacja
Typ nagłówka. 1 = BOOTREQUEST, 2 = BOOTREPLY
Typ sprzętu
Liczba z zakresu 1-28 oznaczająca typ sprzętu (karty sieciowej). Dla sieci ethernetowej przyjmuje wartość 1.
Długość adresu sprzętowego
Oznaczenie długości używanego adresu sprzętowego np. 6 dla Ethernetu 10 Mbps.
Liczba skoków
Pole jest opcjonalne. Zlicza liczbę pośrednich routerów biorących udział w transmisji pakietu.
Identyfikator transakcji
Wybierany losowo przez klienta identyfikator (w sytuacji, gdy serwer nie będzie w stanie "zrozumieć" adresu sprzętowego klienta. Wyśle odpowiedź na broadcast, a xid będzie jedynym sposobem rozpoznania odpowiedzi kierowanej do klienta).
Liczba sekund
Mierzony w sekundach czas, jaki upłynął od momentu pierwszego wysłania przez klienta wiadomości typu BOOTREQUEST.
Flagi
W tej chwili używany tylko 1 bit (BROADCAST flag). Pozostałe 15 bitów jest zarezerwowane na zastosowanie w przyszłości.
Adres IP klienta
Pole nieobowiązkowe. Wypełniane w przypadku np. odświeżania adresu.
Przydzielony adres IP klienta
Trzy możliwości przydzielania adresu: ręcznie (na podstawie MAC), automatycznie (kolejność zgłaszania) i dynamicznie (tylko na pewien okres).
Adres IP serwera
Ustawiane przez serwer.
Adres IP bramki
Ustawiane przez serwer.
Adres sprzętowy klienta
Adres MAC klienta.
Nazwa serwera
Pole opcjonalne. Nazwa hosta serwera.
Plik startowy
Używany w mechanizmie ciasteczek (Magic Cookie).
Opcje
Zestaw ponumerowanych opcji 0-254 np.
DHCP option 50: 192.168.1.100 requested
Klient prosi serwer o przydzielenie danego adres IP [1]


Przechwycenie pakietów

  1. Uruchom Wireshark
  2. Włącz przechwytywanie
  3. Wpisz ipconfig /release
  4. Wpisz ipconfig /renew
  5. Wyłącz przechwytywanie
  6. Filtrujemy wyniki wpisując bootp lub udp.port == 68, lub udp.port == 67

Powinniśmy uzyskać taki efekt.

Wirehark-dhcp1.png

Porzucenie automatycznej adresacji

DHCP Release

Jak widzimy na obrazku, pierwszy pojawił się komunikat DHCP Release. Jest to efekt wydania polecenie ipconfig /release, które jak wiadomo służy do porzucenie automatycznej adresacji.

Informacje nagłówkowe są widocze w programie Wireshark

Wirehark-dhcp2.png

Uzyskanie automatycznego adresu

Wirehark-dhcp3.png

DHCP session.svg

Jak widać po kolei:

  1. DHCPDISCOVER – Klient chcący się połączyć z serwerem wysyła do sieci lokalnej pakiety rozgłoszeniowe zaadresowane do wszystkich odbiorców. Procedura ta nosi nazwę DHCP DISCOVER – odkrywanie DHCP. Czasami routery są konfigurowane, aby przekazywały pakiety DHCP do właściwego serwera w innej podsieci. Pakiety mają adres docelowy rozgłoszeniowy 255.255.255.255 i zawierają prośbę o ostatnio używany adres IP (np. 192.168.1.100). Może ona zostać zignorowana przez serwer.
  2. DHCPOFFER – Oferta DHCP jest składana przez serwer, który określa właściwą konfigurację klienta na podstawie sprzętowego adresu urządzenia sieciowego określonego w polu CHADDR (w sieci lokalnej to adres MAC). W polu YIADDR (adres IP klienta) serwer przekazuje klientowi jego adres IP.
  3. DHCPREQUEST – W odpowiedzi na ofertę klient wysyła Żądanie DHCP, w którym żada zaoferowanego adresu.
  4. DHCPACK – Potwierdzenie DHCP (ang. DHCP Acknowledge) jest wysyłane jako odpowiedź na żądanie. Zakłada się, że reakcją klienta na potwierdzenie będzie odpowiednie skonfigurowanie interfejsu sieciowego.[2]

DHCPDISCOVER

Wirehark-dhcp4.png

Co my tu widzimy. Komputer o mac adresie e4:b9:7a:aa:aa:aa wysyła rozgłoszenie na adres mac ff:ff:ff:ff:ff:ff i adres IP 255.255.255.255. Używany jest protokół UDP (port źródłowy 68, port docelowy 67). Jak widać komputer nie ma przypisanego żadnego adresu IP. Nie zna również adresu serwera DHCP. Jak napisano wcześniej używa adresów rozgłoszeniowych. Używanym wcześniej przez ten komputer adresem IP był 192.168.0.19, dlatego pojawia się on w opcjach, jako prośba o przypisanie tego adresu. W opcjach na dole widać co jeszcze ma zostać przypisane oprócz adresu IP czyli maska podsieci, brama domyślna, adres serwera DNS, itp.


DHCPOFFER

Wirehark-dhcp5.png

Router o mac adresie e4:48:c7:aa:aa:aa i adresie IP 192.168.0.1 wysyła odpowiedź na DHCPDISCOVER na adresy rozgłoszeniowe ff:ff:ff:ff:ff:ff i 255.255.255.255. Używany jest protokół UDP (port źródłowy 67, port docelowy 68). Klient o adresie IP 0.0.0.0 i mac adresie e4:b9:7a:aa:aa:aa może otrzymać adres IP 192.168.0.19 z serwera DHCP o adresie 192.168.0.1. Proponowana maska podsieci to 255.255.255.0, adres bramy domyślnej 192.168.0.1, czas dzierżawy to 1 godzina, adres serwerów DNS to 37.8.214.2 oraz 31.11.202.254, itp. (tych ostatnich opcji nie widać już na obrazku powyżej).

DHCPREQUEST

Wirehark-dhcp6.png

Klient o adresie IP 0.0.0.0 i adresie MAC e4:b9:7a:aa:aa:aa wysyła żądanie na adresy rozgoszeniowe 255.255.255.255 oraz ff:ff:ff:ff:ff:ff. Używany jest protokół UDP (port źródłowy 68, port docelowy 67). Klient żąda zaoferowanych adresów.

DHCPACK

Wirehark-dhcp7.png

Router o mac adresie e4:48:c7:aa:aa:aa i adresie IP 192.168.0.1 wysyła odpowiedź na DHCPREQUEST na adresy rozgłoszeniowe ff:ff:ff:ff:ff:ff i 255.255.255.255. Używany jest protokół UDP (port źródłowy 67, port docelowy 68). Zgadza się na wydzierżawienie adresów. Klient dostaje je takie, jakie były zaoferowane w DHCPOFFER.