Routing & Switching

DHCP - Dynamic Host Configuration Protocol

DHCP - Dynamic Host Configuration Protocol
W: Routing & Switching

W dzisiejszych czasach w większości przypadków, gdy chcemy skorzystać z zasobów internetu, wystarczy podłączyć nasz komputer do gniazdka sieciowego lub podłączyć się do sieci bezprzewodowej. Nie ma znaczenia, czy chcemy sprawdzić pocztę, posłuchać muzyki ze Spotify czy obejrzeć film na Netflixie.

Cała konfiguracja naszej karty sieciowej (Network Interface Card – NIC) odbywa się bez naszego udziału. Jest to możliwe dzięki usłudze o nazwie DHCP (Dynamic Host Configuration Protocol).

DHCP – Dynamic Host Configuration Protocol

Obecnie standardem w sieciach jest protokół IP, który wymaga, aby każdy host miał unikalny adres IP w skali internetu oraz maskę podsieci (oczywiście upraszczając i nie biorąc pod uwagę NAT). Po uzyskaniu tych dwóch elementów potrzebujemy jeszcze adresu urządzenia, zazwyczaj routera lub switcha L3, który będzie działał jako nasza domyślna brama.

Dla użytkownika końcowego istotne jest również posiadanie adresu serwera DNS, który umożliwi przekształcenie nazw domen na adresy IP.

W najprostszym przypadku potrzebujemy otrzymać następujące informacje od serwera DHCP:

  • Unikalny adres IP
  • Maska podsieci
  • Adres domyślnej bramy
  • Adres serwera DNS

DORA, DORA, DORA

Kiedy musimy skonfigurować jedną kartę sieciową lub tylko kilka interfejsów, nie stanowi to problemu i możemy zrobić to ręcznie. Logujemy się do urządzenia i wpisujemy wszystkie komendy po kolei.

I jak zawsze ma tu znaczenie efekt skali oraz wygody, jakie dane rozwiązanie oferuje. Ręczna konfiguracja w dużej skali nie jest ani wygodna, ani szybka.

Nie wspominając o konieczności pilnowania wykorzystania puli adresów w podsieciach.

Ręczna konfiguracja karty sieciowej na MacOS

Jeśli nie wprowadzimy konfiguracji ręcznie, skąd nasza karta sieciowa ma wiedzieć, jaki adres IP, maskę podsieci i adres bramy domyślnej ma używać?

W pomocy przychodzi nam zestaw wiadomości, które są wymieniane między klientem a serwerem DHCP.

W branży te komunikaty są nazywane DORA, co wynika z pierwszych liter tych wiadomości:

Discovery – wysyłane przez klienta

Offer – wysyłane przez serwer DHCP

Request – wysyłane przez klienta

Acknowledgement – wysyłane przez serwer DHCP

Na poniższym obrazku możesz zobaczyć, jak to wygląda w sposób graficzny.

Wymiana pakietów DHCP pomiędzy serwerem a klientem

Prześledźmy jeszcze raz ten proces od samego początku. Kiedy interfejs sieciowy zostaje włączony do sieci, to w pierwszej kolejności sprawdza, czy posiada skonfigurowane odpowiednie parametry do pracy.

  1. Klient wysyła wiadomość DHCP Discovery jako broadcast, czyli do wszystkich dostępnych odbiorców w danym segmencie sieci, aby odnaleźć serwer DHCP.
  2. Serwer DHCP odpowiada, wysyłając DHCP Offer wraz z ofertą adresu IP jako wiadomość typu unicast, tylko do nadawcy.
  3. Następnie klient odpowiada, wysyłając DHCP Request ponownie jako wiadomość typu broadcast, że akceptuje adres i będzie pod nim osiągalny.
  4. Serwer DHCP wysyła DHCP Acknowledgement jako potwierdzenie przydzielenia adresu oraz dzierżawy dla klienta jako wiadomość typu unicast.

Dzierżawa i odnawianie adresu IP

O co chodzi z tą dzierżawą? Otóż każdy serwer DHCP ma z góry określoną pulę adresów, które może wykorzystać. Na przykład mając podsieć składającą się z 14 użytecznych adresów, chcielibyśmy zarezerwować pierwsze 3 adresy dla naszego routera, serwera plików i drukarki. W takim wypadku serwer DHCP może rozdać adresy od 4 do 14.

Teraz wyobraź sobie, że jesteś w biurze, które zatrudnia 20 osób, ale pracują oni na 2 zmiany. Każdy z pracowników ma swojego laptopa, z którego korzysta w pracy. I teraz w momencie, gdy Karol przychodzi rano do pracy, dostaje adres 192.168.0.4, to serwer DHCP zapisuje w swoim rejestrze, że ten adres należy do Karola na przykład na 1 godzinę.

Karol spędził w pracy 8 godzin, posługując się otrzymanym adresem, ale na koniec pracy wyłączył laptopa i zabrał go do domu.

Standardowo serwer DHCP stara się potwierdzić ważność dzierżawy w połowie okresu jej trwania. Jeśli nie otrzyma potwierdzenia, że chcemy taki adres nadal używać, dany adres wróci do puli dostępnych adresów.

Z tego faktu może skorzystać na przykład Adam, który przychodzi do pracy wieczorem i również otrzymuje adres 192.168.0.4. Tak długo jak dzierżawa będzie odnawiana, ten adres będzie należał do Adama, nawet jeśli Karol przyjdzie do pracy, zanim Adam skończy swoją zmianę.

relacja klient-serwer DHCP

Pozostałe pakiety DHCP

Oprócz pakietów wykorzystywanych w procesie DORA, klient oraz serwer DHCP mogą wymieniać dodatkowe pakiety:

  • DHCPNAK: Pakiet wysyłany przez serwer do klienta z informacją, że jego adres IP jest nieprawidłowy lub wygasła dzierżawa.
  • DHCPDECLINE: Pakiet wysyłany przez klienta do serwera z informacją, że adres jest w użyciu.
  • DHCPRELEASE: Pakiet wysyłany przez klienta do serwera z informacją, że adres zostaje zwolniony.
  • DHCPINFORM: Pakiet wysyłany przez klienta do serwera z prośbą o przesłanie wyłącznie informacji o konfiguracji sieci, gdy klient ma już zewnętrznie przypisany adres IP.

Parametry przekazywane przez DHCP

Jak już wcześniej wspomnieliśmy, serwer DHCP może dostarczyć nam adres IP, maskę podsieci, adres bramy domyślnej oraz adres serwera DNS. Jednak zdefiniowany w standardzie RFC 1533 pozwala na przekazanie znacznie większej ilości danych.

Do pozostałych opcji, które możemy otrzymać z takiego serwera należy między innymi:

  • adres serwera TFTP
  • maksymalny rozmiar MTU
  • adres serwera SMTP
  • adres serwera NTP
  • Statyczne trasy routingu

Specyficzne opcje DHCP są również wykorzystywane przez Control And Provisioning of Wireless Access Points (CAPWAP) Access Controller DHCP.

IP helper

Dotychczas omówiliśmy sytuację, gdy klient DHCP oraz serwer DHCP znajdują się w tej samej sieci lokalnej. Zazwyczaj takie rozwiązanie stosowane jest w domu lub w małym biurze, gdzie brzegowy router zapewnia także usługę DHCP.

W większych organizacjach oraz u dostawców usług internetowych preferowane jest posiadanie serwera DHCP lub nawet kilku serwerów w jednym scentralizowanym punkcie, zamiast setek lub tysięcy rozproszonych w różnych lokalizacjach. Ułatwia to zarządzanie pulami adresów oraz pozwala na ich efektywne wykorzystanie.

Napotykamy więc na problem, jak przekazać nasz pakiet typu broadcast do serwera przez internet oraz gdzie w ogóle wysłać taki pakiet. W takiej sytuacji pomocny okazuje się DHCP relay, który Cisco nazywa IP helper.

IP helper definiujemy na interfejsie skierowanym w stronę danej sieci lokalnej lub pod interfejsem SVI. Jest to adres serwera DHCP. Ponadto, pomocnik IP działa jako przekaźnik (relay), przekształcając pakiety typu broadcast wysłane przez klienta w pakiety unicast kierowane do docelowego serwera.

Router(config-if)#ip address 192.168.0.1 255.255.255.0
Router(config-if)#ip helper-address 192.168.1.2
dhcp z ip helperem

Ataki na usługę DHCP

Usługa DHCP, podobnie jak wiele innych, może być wykorzystana zarówno w celu ułatwienia naszego życia, jak i do złych celów.

  • Atak typu Starvation (wysycenie) polega na zapełnieniu puli adresów poprzez wysyłanie fałszywych adresów MAC z jednego hosta do serwera DHCP. W efekcie nasz serwer odpowiada adresem IP na każdą wiadomość z żądaniem (DHCP Discovery).
atak starvation wysycenie puli adresow ip

Formą obrony przed tego typu atakami jest DHCP snooping binding.

Przechowuje on w pamięci switcha informację, że na konkretnym interfejsie klient już uzyskał adres IP (zapisuje parę MAC-IP oraz czas dzierżawy). W takiej sytuacji żaden nowy pakiet DHCP discovery nie zostanie przekazany dalej do końca czasu dzierżawy.

  • Atak polegający na podmianie serwera DHCP polega na ustawieniu w sieci drugiego serwera DHCP, który odpowiadał będzie na żądania od klientów, wysyłając podmienione dane. W konsekwencji klient DHCP może uzyskać adres bramy domyślnej lub adres serwera DNS kontrolowanego przez osobę nieupoważnioną.
Podstawiony (rogue) serwer DHCP w siecie

Do obrony przed atakami służy pojęcie zaufanych interfejsów, z których mogą pochodzić odpowiedzi od serwera DHCP, oraz niezaufanych, z których odpowiedzi nie powinny pochodzić, ale te interfejsy wciąż mogą wysyłać pakiety od strony klienta.

Interfejsem zaufanym będzie na pewno port, do którego podłączony jest serwer DHCP, oraz trunki, z których oczekujemy nadejścia pakietów DHCP. Do niezaufanych z zasady należą wszystkie pozostałe interfejsy, na których nie spodziewamy się odpowiedzi serwera.

Zaufane interfejsy stanowią kluczowy element ochrony sieci przed potencjalnymi atakami, dlatego ważne jest, aby właściwie je skonfigurować i nadzorować.

Konfiguracja DHCP na routerze Cisco

Konfiguracja DHCP na routerze Cisco jest stosunkowo prosta.

W pierwszej kolejności należy utworzyć i nazwać pulę, z której serwer DHCP będzie korzystał. Następnie należy przypisać konkretną sieć do tej puli.

W kolejnym kroku należy zdefiniować adres bramy domyślnej oraz opcjonalnie adres serwera DNS.

Router(config)#ip dhcp pool BIURO
Router(dhcp-config)#network 192.168.0.0 255.255.255.0
Router(dhcp-config)#default-router 192.168.0.1

Warto rozważyć wyznaczenie części adresów z określonej puli do adresacji statycznej. Możemy to osiągnąć poprzez wykluczenie określonego zakresu adresów z puli przydzielanych przez serwer DHCP.

Router(config)#ip dhcp excluded-address 192.168.0.1 192.168.0.10

Warto pamiętać, że nasz serwer będzie przydzielał adresy IP z puli zgodnej z adresem interfejsu, na którym otrzymał pakiet DHCP Discovery, lub zgodnej z adresem źródłowym, jeśli został użyty IP Helper.

Przydział adresów przez serwer DHCP

Weryfikacja usługi DHCP na routerze Cisco

Aby zweryfikować poprawność konfiguracji usługi DHCP, możemy skorzystać z poniższych poleceń:

  • show ip dhcp binding – Wyświetla listę wszystkich przydzielonych adresów IP i informacje o klientach.
Router#show ip dhcp binding
IP address  Client-ID/        Lease expiration Type
            Hardware address
192.168.0.2 0003.E477.CDE8     --              Automatic

show ip dhcp pool <nazwa_puli> – Wyświetla listę skonfigurowanych puli adresów IP oraz statystyki ich wykorzystania.

Router#show ip dhcp pool OFFICE
Pool OFFICE :
Utilization mark (high/low) : 100 / 0
Subnet size (first/next) : 0 / 0
Total addresses : 254
Leased addresses : 1
Excluded addresses : 0
Pending event : none
1 subnet is currently in the pool
Current index IP address range Leased/Excluded/Total
192.168.0.1 192.168.0.1 - 192.168.0.254 1 / 0 / 254

APIPA – Automatic Private IP Addressing

Każdy interfejs sieciowy do komunikacji w warstwie 3 potrzebuje adresu IP. Co jednak w sytuacji, gdy nie został on skonfigurowany oraz nie mamy dostępu do serwera DHCP?

W takim wypadku wkracza APIPA, czyli Automatic Private IP Addressing. Przydziela on adres IPv4 z puli 169.254.0.1 – 169.254.255.254, z domyślną maską 255.255.0.0. Ten zakres adresów jest zarezerwowany przez IANA do celów automatycznej adresacji sieci lokalnych (LAN).

W teorii adres przydzielony przez APIPA powinien zostać zastąpiony adresem otrzymanym z serwera DHCP, kiedy pojawi się on ponownie w sieci.

Napisane przez
Rafał Rudewicz
Pasjonat sieci komputerowych i automatyzacji. CCNP Enterprise & DevNet Specialist. IP/MPLS SME. Dołącz do mnie, aby razem odkrywać fascynujący świat technologii!
Komentarze
Spis treści
Świetnie! Udało ci się pomyślnie zarejestrować.
Witaj z powrotem! Zalogowałeś się pomyślnie.
Pomyślnie subskrybowałeś Inna Sieć.
Twój link wygasł.
Sukces! Sprawdź swoją skrzynkę e-mailową, aby uzyskać magiczny link do logowania.
Sukces! Twoje informacje rozliczeniowe zostały zaktualizowane.
Twoje informacje rozliczeniowe nie zostały zaktualizowane.