Wireshark - DHCP
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
- Uruchom Wireshark
- Włącz przechwytywanie
- Wpisz
ipconfig /release
- Wpisz
ipconfig /renew
- Wyłącz przechwytywanie
- Filtrujemy wyniki wpisując
bootp
lubudp.port == 68
, lubudp.port == 67
Powinniśmy uzyskać taki efekt.
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
Uzyskanie automatycznego adresu
Jak widać po kolei:
- 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.
- 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.
- DHCPREQUEST – W odpowiedzi na ofertę klient wysyła Żądanie DHCP, w którym żada zaoferowanego adresu.
- 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
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
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
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
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.