Jednym z wymogów sieci komputerowych opartych o protokół IP jest posiadanie unikalnego adresu dla każdego urządzenia znajdującego się w danej podsieci. Takie rozwiązanie gwarantuje nam, że dane dotrą zawsze do prawidłowego hosta. Może to jednak powodować pewne niedogodności, szczególnie przy dużych sieciach, gdzie często zmieniają się podłączeni użytkownicy. Spróbuj wyobrazić sobie ręczne przydzielanie adresów w ogólnodostępnej sieci WIFI w centrum handlowym czy sporym hotelu. W każdym takim miejscu pewnie musiałby być zatrudniony pracownik, który zajmowałby się wyłącznie pilnowaniem przydzielonych adresów.
Kiedy stosować dynamiczną konfigurację?
Z pomocą przychodzi nam jednak DHCP, czyli Dynamic Host Configuration Protocol. Zadaniem tego protokołu jest automatyczne przydzielanie odpowiednich adresów IP dla urządzeń końcowych. Oprócz indywidualnego adresu IP każdy host otrzymuje dane niezbędne do konfiguracji sieciowej jak:
- maska podsieci,
- adres bramy domyślnej,
- adres serwera DNS.
W ten sposób użytkownik podłączając się do sieci może w zasadzie natychmiast uzyskać łączność zarówno z siecią lokalna, jak i sieciami zdalnymi.
Warto jednak pamiętać, że nie zawsze wskazane jest stosowanie dynamicznych adresów. W przypadku urządzeń takich jak routery, serwery czy drukarki sieciowe, czyli urządzeń odpowiadających za funkcjonowanie sieci lub zapewniających dostęp do różnych usług, najczęściej stosuje się statyczne adresy IP.
Protokół DHCP oparty jest o architekturę klient-serwer. Oznacza to, że za przydzielanie adresów IP oraz dodatkowych danych konfiguracyjnych odpowiedzialny jest odpowiednio skonfigurowany serwer DHCP. Rolę takiego serwera może pełnić zarówno dedykowana do tego celu stacja robocza, serwer pełniący inne funkcje w sieci (np. kontroler domeny) jak również można go skonfigurować na urządzeniach sieciowych. Klientami natomiast są wszystkie urządzenia, które zwrócą się z prośbą o przydzielenie adresu.
DHCP używa do wymiany wiadomości protokołu UDP, należy jednak pamiętać, że w przypadku komunikatów wysyłanych przez serwer będzie to port 67, a wiadomości wysyłane przez klienta będą wykorzystywać port 68.
DORA, czyli…
Jak zatem wygląda komunikacja pomiędzy serwerem DHCP i klientami?
Najczęściej przebiega ona w 4 krokach (proces ten często nazywany jest DORA, od pierwszych liter komunikatów):
- Klient wysyła wiadomość DISCOVER – w ten sposób poszukuje serwera DHCP, który zapewni mu dostęp do sieci,
- Serwer DHCP wysyła odpowiedź OFFER, gdzie informuje klienta, że ma mu do zaoferowania konkretny adres IP,
- Klient w odpowiedzi wysyła żądanie REQUEST, gdzie akceptuje adres otrzymany od serwera,
- Serwer DHCP w odpowiedzi wysyła komunikat ACKNOWLEDGEMENT, potwierdzając przydzielenie adresu dla klienta.
Jak już wspomniałem wcześniej adresy przydzielane przez serwer DHCP nazywane są adresami dynamicznymi. Wynika to z tego, że są one przydzielane na określony czas, który nazywany jest dzierżawą (ang. lease). Protokół DHCP definiuje, że klient w połowie czasu dzierżawy musi skontaktować się z serwerem, żeby potwierdzić wykorzystanie adresu. Jeśli czas dzierżawy minie, a serwer nie otrzyma informacji od hosta, serwer może uznać, że adres jest wolny i może zostać przydzielony innemu klientowi.
Zobaczmy to na przykładzie. Komputer po podłączeniu do sieci nie był wyłączany przez miesiąc. W tym czasie przydzielony adres dynamiczny nie uległ zmianie. Następnie został on wyłączony na noc. Przez ten okres czas dzierżawy adresu dla tego komputera minął, a w międzyczasie do sieci podłączyły się inne urządzenia. Dotychczasowy adres został więc wykorzystany i przydzielony dla innego hosta, natomiast Nasz komputer po ponownym połączeniu z serwerem DHCP otrzyma nowy adres IP.
Konfiguracja
Znasz już podstawy działania protokołu DHCP, spróbujmy teraz to wykorzystać w praktyce. Zobaczmy jak wygląda konfiguracja serwera DHCP na routerze Cisco. Jak się przekonasz jest ona całkiem prosta i opiera się na paru komendach:
- Określ pulę adresów IP (pierwszy i ostatni adres z danego zakresu), które nie będą przydzielane przez serwer DHCP. Pula ta jest zarezerwowana dla wspomnianych wcześniej urządzeń korzystających ze statycznych adresów IP:
Router(config)#ip dhcp excluded-address 192.168.0.1 192.168.0.15
2. Utwórz nazwę puli adresów DHCP, którą serwer będzie przydzielać klientom:
Router(config)#ip dhcp pool PULA_DHCP
3. Przydziel podsieć, z której będą przydzielane dynamiczne adresy IP:
Router(dhcp-config)#network 192.168.0.0 255.255.255.0
4. Określ adres IP bramy domyślnej (czyli routera):
Router(dhcp-config)#default-router 192.168.0.1
Jest to podstawowa konfiguracja, niezbędna do uruchomienia serwera. Możesz również skonfigurować wiele dodatkowych opcji takich jak:
- Adres IP serwera DNS:
Router(dhcp-config)#dns server 192.168.0.2
2. Nazwa domeny DNS:
Router(dhcp-config)#domain-name cisco.com
3. Czas dzierżawy (odpowiednio dla każdej wartości: dni, godziny, minuty):
Router(dhcp-config)#lease 1 0 0
Następnym krokiem, jaki musisz wykonać jest sprawdzenie czy usługa jest prawidłowo skonfigurowana. Szczególnie przydatne będą tu dwa polecenia:
- Wyświetlenie listy wydzierżawionych adresów IP:
Router#show ip dhcp binding IP address Client-ID/ Lease expiration Type Hardware address 192.168.0.16 0060.2F46.0870 -- Automatic
2. Wyświetlenie listy skonfigurowanych podsieci oraz statystyk dotyczących wykorzystania puli:
Router#show ip dhcp pool PULA_DHCP
Pool PULA_DHCP :
Utilization mark (high/low) : 100 / 0
Subnet size (first/next) : 0 / 0
Total addresses : 254
Leased addresses : 1
Excluded addresses : 1
Pending event : none
Current index IP address range Leased/Excluded/Total
192.168.0.1 192.168.0.1 - 192.168.0.254 1 / 1 / 254
IP Helper
Konfiguracja jaką przeprowadziliśmy powyżej sprawdzi się w małych sieciach. W przypadku dużych organizacji, które wykorzystują wiele podsieci częstym rozwiązaniem jest stosowanie jednego serwera DHCP dla całej firmy. Takie rozwiązanie ułatwia konfigurację i zarządzanie adresacją. Pojawia się jednak problem, ponieważ komunikat DHCPDISCOVER jest pakietem typu broadcast, więc nie zostanie wysłany poza podsieć, w której się znajduje. Rozwiązaniem jest tutaj tzw. DHCP Relay Agent.
Konfiguracja DHCP Relay Agent wygląda następująco:
- Skonfiguruj adres IP routera w swojej podsieci:
Router(config-if)#ip address 192.168.0.1 255.255.255.0
2. Skonfiguruj adres IP serwera DHCP:
Router(config-if)#ip helper-address 192.168.10.2
Dzięki konfiguracji adresu IP Helper router zna adres serwera DHCP i przekazuje wszystkie wiadomości od klienta DHCP do serwera (zamieniając pakiet broadcast na unicast) jak również przesyła komunikaty w drugą stronę.
Dodatkowe komunikaty DHCP
Jak sam widzisz konfiguracja DHCP dla IPv4 nie jest niczym skomplikowanym. Jest to usługa, która naprawdę ułatwia życie administratorom, a jednocześnie jest zupełnie niewidoczna dla użytkowników. Może się zdarzyć, że komunikacja między klientem, a serwerem nie zawsze przebiegnie bezproblemowo. W takim przypadku podstawowe komunikaty protokołu DHCP mogą okazać się nie wystarczające. Przeczytasz o tym w naszym darmowym NSSletterze – mailingu dla sieciowców głodnych wiedzy.
Dołączając uzyskasz dostęp również do archiwum – tematykę tego artykułu rozszerzyliśmy w NSSletterze #17. Rozwiń swoją wiedzę już teraz i zapisz się używając formularza poniżej.
Przy omawianiu DHCP warto wspomnieć o APIPA. Dla chętnych – co kiedy w sieci nie ma serwera DHCP lub pula adresów zostanie wyczerpana?
https://pl.m.wikipedia.org/wiki/Automatic_Private_IP_Addressing
Zdecydowanie! Otrzymanie adresu autokonfiguracji (zazwyczaj 169.254.x.x na Windows) jest pierwszym znakiem, że z DHCP coś nie do końca zagrało dobrze 🙂
Zdecydowanie masz rację Marek, dzięki za sugestię! Jeżeli jesteś zainteresowany to zachęcam Cię do przeczytania artykułu który napisałem na ten temat https://www.nastykusieci.pl/czym-jest-apipa/ 😌