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.
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.
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.
- Klient wysyła wiadomość DHCP Discovery jako broadcast, czyli do wszystkich dostępnych odbiorców w danym segmencie sieci, aby odnaleźć serwer DHCP.
- Serwer DHCP odpowiada, wysyłając DHCP Offer wraz z ofertą adresu IP jako wiadomość typu unicast, tylko do nadawcy.
- Następnie klient odpowiada, wysyłając DHCP Request ponownie jako wiadomość typu broadcast, że akceptuje adres i będzie pod nim osiągalny.
- 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ę.
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
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).
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ą.
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.
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.