SIECI KOMPUTEROWE I - DHCP


 

 

Protokół DHCP

Wprowadzenie

DHCP (Dynamic Host Configuration Protocol) jest protokołem komunikacyjnym umożliwiającym komputerom uzyskanie od serwera danych konfiguracyjnych - adresu IP hosta, adresów bramy sieciowej oraz serwera DNS, maski sieci. Protokół DHCP jest zdefiniowany w RFC 2131 i jest następcą BOOTP. DHCP został opublikowany jako standard w roku 1993. W przeciwieństwie do protokołu BOOTP protokół DHCP pozwala hostowi pobierać adres IP dynamicznie, dzięki czemu administrator sieci nie musi tworzyć oddzielnych profili dla każdego urządzenia. Do używania protokołu DHCP konieczne jest jedynie zdefiniowane zakresu adresów IP na serwerze DHCP. Host, przyłączając się do sieci, kontaktuje się z serwerem DHCP i żąda przypisania adresu. Serwer DHCP wybiera adres i dzierżawi go odpowiedniemu hostowi. Protokół DHCP pozwala na pobranie całej konfiguracji sieciowej komputera w jednym komunikacie. Oznacza to pobranie wszystkich danych przesyłanych w komunikacie BOOTP oraz wydzierżawionego adresu IP i maski podsieci.
Główną zaletą protokołu DHCP w porównaniu z protokołem BOOTP jest możliwość obsługi użytkowników mobilnych. Mobilność umożliwia użytkownikom swobodną zmianę połączeń sieciowych w zależności od miejsca pracy. Nie ma tutaj występującej w systemie BOOTP potrzeby przechowywania stałego profilu dla każdego urządzenia przyłączonego do sieci. Ważną zaletą protokołu DHCP jest możliwość wydzierżawienia adresu IP oraz odzyskania go w celu przypisania innemu użytkownikowi, gdy pierwszy użytkownik zwolni ten adres. Oznacza to, że protokół DHCP umożliwia utworzenie relacji jeden do wielu między adresami IP i komputerami, a także że adres jest dostępny dla każdego, kto przyłącza się do sieci.

Protokół DHCP opisuje trzy techniki przydzielania adresów IP:

  • przydzielanie ręczne oparte na tablicy adresów MAC oraz odpowiednich dla nich adresów IP. Jest ona tworzona przez administratora serwera DHCP. W takiej sytuacji prawo do pracy w sieci mają tylko komputery zarejestrowane wcześniej przez obsługę systemu,
  • przydzielanie automatyczne, gdzie wolne adresy IP z zakresu ustalonego przez administratora są przydzielane kolejnym zgłaszającym się po nie klientom,
  • przydzielanie dynamiczne, pozwalające na ponowne użycie adresów IP. Administrator sieci nadaje zakres adresów IP do rozdzielenia. Wszyscy klienci mają tak skonfigurowane interfejsy sieciowe, że ustawienia pobierane są automatycznie. Każdy adres przydzielany jest na pewien okres czasu. Taka konfiguracja powoduje, że zwykły użytkownik ma ułatwioną pracę z siecią.

Serwer DHCP może dostarczać swoim klientom dodatkowe dane pozwalające na konfigurację sieci. Zostały one opisane w specyfikacji RFC 2132. Niektóre z dodatkowych opcji:

  • adres IP serwera DNS,
  • nazwa DNS,
  • adres IP bramy sieciowej (gateway),
  • adres broadcast,
  • maska podsieci,
  • maksymalny czas oczekiwania na odpowiedź w protokole ARP,
  • wartość MTU (maksymalny rozmiar pakietu).

 

Historia i standaryzacja

1985 – BOOTP (Bootstrap Protocol)

dla bezdyskowych stacji roboczych,

poznanie własnego adresu IP oraz poło˙zenia obrazu rozruchowego

do załadowania systemu operacyjnego.

1993 – RFC 1531

pierwsza wersja DHCP.

1997 (RFC 2131)

obecnie stosowana wersja.

DHCPv6 (RFC 3315)

DHCP dla IPv6.

Authentication for DHCP Messages (RFC 3118)

rozszerzenia dla bezpiecze´nstwa.

 

 

DHCP – problemy z bezpieczenstwem

Usługa zbudowana na niezabezpieczonych IP i UDP.

Mo˙zna uruchomi´c nieautoryzowany serwer

DHCP:

przypisywanie fałszywych adresów,

przypisywanie duplikatów adresów,

przypisywanie nieprawidłowego adresu rutera,

przypisywanie nieprawidłowego adresu serwera nazw.

Mo˙zna uruchomi´c nieautoryzowanego klienta:

zdobywanie informacji przeznaczonych dla tego klienta,

przy dynamicznym przyznawaniu adresów, mo˙zliwe wyczerpanie

puli adresów serwera.

 

W warstwie sieciowej poza protokołem IP (przesyłanie danych) istnieje

kilka protokołów steruja˛cych:

ICMP

ARP

RARP

BOOTP

DHCP

 

Terminologia protokołu DHCP

 

Termin

Opis

zakres

Zakres jest pełnym obszarem kolejnych możliwych do przydzielenia w danej sieci adresów IP. Zakresy zwykle określają pojedynczą podsieć fizyczną danej sieci, w której są oferowane usługi DHCP. Ponadto zakresy są dla serwera podstawą zarządzania dystrybucją i przypisywaniem klientom w sieci adresów IP oraz innych związanych z nimi parametrów konfiguracji.

superzakres

Superzakres jest administracyjną grupą zakresów, która może być używana do obsługi wielu logicznych podsieci IP w tej samej podsieci fizycznej. Superzakresy zawierają jedynie listę zakresów składowych (inaczej zakresów podrzędnych), które mogą być uaktywniane razem. Superzakresy nie są używane do konfigurowania innych szczegółów dotyczących korzystania z zakresu. Aby skonfigurować większość właściwości używanych w obrębie superzakresu, trzeba indywidualnie skonfigurować właściwości zakresów składowych.

obszar wykluczeń

Obszar wykluczeń jest ograniczoną sekwencją adresów IP w zakresie, wykluczoną z ofert usługi DHCP. Obszary wykluczeń zapewniają, że żaden z należących do nich adresów nie będzie oferowany przez serwer klientom DHCP w danej sieci.

pula adresów

Po zdefiniowaniu zakresu DHCP i zastosowaniu obszarów wykluczeń pozostałe adresy tworzą dostępną pulę adresów w zakresie. Adresy z tej puli mogą być dynamicznie przypisywane przez serwer klientom DHCP w sieci.

dzierżawa

Dzierżawa to określony przez serwer DHCP czas, przez jaki komputer kliencki może korzystać z przypisanego mu adresu IP. Gdy dzierżawa zostanie utworzona dla klienta, staje się aktywna. Przed wygaśnięciem dzierżawy adresu klient zwykle odnawia ją na serwerze. Dzierżawa staje się nieaktywna, jeśli wygaśnie lub zostanie usunięta z serwera. Czas trwania dzierżawy określa, kiedy dzierżawa wygasa i jak często klient musi ją odnawiać.

zastrzeżenie

Zastrzeżenie służy do utworzenia przez serwer DHCP stałego przypisania dzierżawy adresu. Zastrzeżenia dają pewność, że dane urządzenie sprzętowe w podsieci będzie mogło zawsze korzystać z tego samego adresu IP.

typy opcji

Typy opcji są innymi parametrami konfiguracji klienta, które serwer DHCP może przypisywać klientom razem z dzierżawami. Na przykład niektóre powszechnie używane opcje obejmują adresy IP domyślnych bram (routerów) oraz serwerów WINS i DNS. Zwykle te typy opcji są włączane i konfigurowane dla każdego zakresu. Konsola DHCP umożliwia również konfigurowanie domyślnych typów opcji używanych przez wszystkie zakresy dodane i skonfigurowane na serwerze. Większość opcji jest wstępnie zdefiniowana na podstawie specyfikacji RFC 2132, ale w razie potrzeby konsoli DHCP można użyć do zdefiniowania i dodania niestandardowych typów opcji.

klasa opcji

Klasa opcji daje serwerowi dodatkową możliwość zarządzania typami opcji dostarczanych klientom. Po dodaniu na serwerze klasy opcji klientom tej klasy można dostarczać typy opcji specyficzne dla danej klasy. W przypadku systemów Microsoft® Windows® 2000 i Windows XP komputery klienckie mogą podczas komunikowania się z serwerem określać również identyfikator klasy. W przypadku starszych klientów DHCP, którzy nie obsługują procesu identyfikacji klas, serwer można skonfigurować do używania klas domyślnych i w nich umieścić tych klientów. Istnieją dwa typy klas opcji: klasy dostawców i klasy użytkowników.

 

 

DHCP

Cały proces uzgadniania i przydzielania jest czteroetapowy.

Ujawnienie DHCP (Discover)

Klient protokołu DHCP emituje pakiet żądania konfiguracji DHCPDISCOVER, dostarczając swój adres MAC oraz nazwę hosta. Jeżeli dany klient miał wcześniej przydzielony adres IP, to wysyła również tę informację w polu opcji żądany adres. W ten sposób klient często utrzymuje ten sam adres, nawet jeżeli został wyłączony na dłużej niż czas trwania jego dzierżawy.

Oferta DHCP

Każdy serwer DHCP otrzymujący żądanie odpowiada pakietem emisji DHCPOFFER, zawierającym oferowany adres IP (jeżeli ma jeden lub więcej nieprzydzielonych) oraz jego własny adres IP. Serwery DHCP na dalekim końcu routera mogą odpowiadać na emisję DHCPDISCOVER pod warunkiem, że router ma włączone przesyłanie ruchu emisji DHCP.

Żądanie DHCP (Request)

To kolejny pakiet również wysyłany przez klienta jako rozgłoszenie. Powodem takiego postępowania jest potrzeba powiadomienia jednego serwera o przyjęciu oferty i, jednocześnie, wszystkich pozostałych o jej odrzuceniu. W przypadku odebrania wielu ofert DCHP, proces podejmowania decyzji przez klienta firmy Microsoft przebiega następująco:

·        klient DHCP przyjmuje ofertę z serwera, który przydzielał adres IP używany ostatnio,

·        jeżeli serwer przydzielający wcześniejszy adres nie odpowiada, przyjmowana jest pierwsza oferta odebrana.

Potwierdzenie DHCP

Serwer DHCP oficjalnie przydziela żądany adres klientowi w pakiecie emisji DHCPACK. Pakiet zawiera również podane w żądaniu parametry opcjonalne, długość całkowitego okresu dzierżawy adresu oraz okresów jego odnawiania. Serwer przechowuje te informacje w swojej bazie danych jako przydzieloną dzierżawę.

Odświeżanie (odnawianie) DHCP

Nieodłącznym elementem przydzielenia klientowi adresu IP przez serwer DHCP jest przyznanie dodatkowo tzw. czasu użytkowania (lease). Określa on czas ważności ustawień. W tle pracują dwa zegary - T1 odmierza połowę czasu użytkowania, zaś T2 - 87,5 procent pełnego czasu użytkowania. Obie wartości można zmienić w opcjonalnych ustawieniach serwera DHCP - jeśli takie funkcje zostały zaimplementowane. Po upływie czasu T1 klient wysyła komunikat DHCPREQUEST do serwera i pyta, czy serwer może przedłużyć czas użytkowania. Stan ten określa się jako renewing status. Z reguły serwer odpowiada wiadomością DHCPACK i przydziela nowy czas użytkowania. Serwer resetuje wówczas zegary T1 i T2.

Jeżeli po upływie czasu T2 klient nie otrzyma wiadomości DHCPACK, rozpoczyna się tak zwany rebinding status. Klient musi wysłać komunikat DHCPREQUEST, żeby uzyskać przedłużenie czasu użytkowania. Serwer może odpowiedzieć na to żądanie potwierdzeniem DHCPACK. Jeżeli jednak i to żądanie pozostanie bez odpowiedzi, klient musi zażądać nowego adresu IP. Wkracza wówczas ponownie opisany na początku mechanizm, który rozsyła zapytania do wszystkich serwerów DHCP w sieci.

Obszar adresowania a czas użytkownika

Zanim serwer DHCP będzie w ogóle mógł zacząć przydzielać klientom adresy IP, musi zostać wyposażony w informacje na temat przewidzianego do tych celów obszaru adresowego (rangę). Obszar adresowy jest zdefiniowany poprzez adres początkowy i końcowy. W zależności od implementacji mogą też być obszary wykluczone, a więc takie, których serwer nie może przydzielać. Gwarantuje to bezkolizyjne współistnienie w sieci adresów stałych i dynamicznie przydzielanych. Czas użytkowania określany jest zwykle w dniach, godzinach i minutach. Nie ma w tym względzie żadnej złotej reguły. Parametr ten, jeśli w ogóle jest zaimplementowany w poszczególnych produktach, musi uwzględniać obciążenie serwera, zachowanie klientów i stabilność sieci. Decydujące znaczenie ma liczba potencjalnych klientów. Reguła brzmi: czas użytkowania powinien być dwukrotnie dłuższy niż czas potrzebny do przywrócenia pracy serwera w razie jego awarii. W przypadku długiego czasu użytkowania, odpowiednio później uwzględniane są zmiany opcji DHCP po stronie klientów.

 

 

Klient wysyła rozgłoszeniową ramkę ethernetową  - Ethernet broadcast. Wysyłana ramka nie zawiera adresu żródłowego IP (gdyż najczęściej klient jeszcze nie posiada przydzielonego IP), oraz podaje jako adres docelowy IP 255.255.255.255 : dowolny adres. Następne pola ramki zawierają :

  • protokół : UDP, source port : 68 (odpowiedź oczekiwana na porcie UDP  68)
  • port docelowy : 67 – serwery DHCP nasłuchują na porcie 67
  • BOOTP (Boot Strap Protocol) pakiet zawierający adres MAC karty sieciowej

 

 

Odpowiedź z serwera DHCP:

 

 

 

 

Literatura

  • Komar, B. (2002). TCP/IP dla każdego. Gliwice: Helion.
  • Scrimger R., LaSalle P., Leitzke C., Parihar M., Gupta M. (2002). TCP/IP. Biblia. Gliwice: Helion.
  • McLean, I. (2002). TCP/IP. Czarna księga. Gliwice: Helion.
  • "PC World Komputer PRO". Nr 3/2003

Wzorcowa implementacja Internet Software Consortium

 

http://www.isc.org/products/DHCP/

 

dostępna dla większości systemów uniksowych i dla Windows.

 

 

PRZYKŁADOWE ROZWIĄZANIE

 

 

1. PULA ADRESÓW IP

 

A) Edycja: /etc/sysconfig/network-scripts/ifcfg-eth0 :

 

BOOTPROTO=dhcp

ONBOOT=yes

 

Restart sieci:

# service network restart

 

B) Edycja /etc/sysconfig/dhcpd:

 

DHCPDARGS=eth0

 

C) Edycja /etc/dhcpd.conf :

ddns-update-style none;

subnet 192.168.15.0 netmask 255.255.255.0 {

option subnet-mask 255.255.255.0;

range dynamic-bootp 192.168.15.17 192.168.15.33;

}

Uruchomić serwer dhcpd:

# dhcpd –d

Klient po restarcie sieci (# service network restart) powinien otrzymać adres z wybranej puli.

 

 

2. ADRES ROZGŁOSZENIOWY, BRAMA DOMYŚLNA, 2 SERWERY DNS.

 

Edytujemy /etc/dhcpd.conf :

ddns-update-style none;

subnet 192.168.15.0 netmask 255.255.255.0 {

option subnet-mask 255.255.255.0;

range dynamic-bootp 192.168.15.17 192.168.15.33;

option routers 192.168.15.1;

option domain-name-servers 192.168.15.15, 192.168.15.16;

option broadcast-address 192.168.15.255;

}

 

Restart serwera:

# service dhcpd restart

W kliencie po restarcie sieci sprawdzić:

- serwery DNS: # cat /etc/resolv.conf , plik powinien zawierać adresy serwerów:

nameserver 192.168.15.15

nameserver 192.168.15.16

-bramę domyślną w tablicy routingu: # router -n

 

 

3. PRZYDZIELANIE TYCH SAMYCH ADRESÓW IP.

 

Edycja /etc/dhcpd.conf :

ddns-update-style none;

subnet 192.168.15.0 netmask 255.255.255.0 {

option subnet-mask 255.255.255.0;

range dynamic-bootp 192.168.15.17 192.168.15.33;

option routers 192.168.15.1;

option domain-name-servers 192.168.15.15, 192.168.15.16;

option broadcast-address 192.168.15.255;

host klient{

hardware ethernet 00:02:44:93:f0:b0;

fixed-address 192.168.15.3

}

}

 

 

Pliki *.leases

Informacje o wypożyczeniach adresów zapisane są w plikach:

- serwer: var/lib/dhcpd/dhcpd.leases

- klient: var/lib/dhcp/dhclient.leases

 

 

 

Plik konfiguracyjny to /etc/dhcpd.conf
[root@localhost ~]# cat /etc/dhcpd.conf
# # DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
#
ddns-update-style none;
default-lease-time 259200;
max-lease-time 518400;

#określamy podsieć w jakiej będziemy przyznawać adresy oraz maskę tej podsieci
subnet 192.168.0.0 netmask 255.255.255.0 {

option subnet-mask 255.255.255.0;
#określamy adres broadcastu w naszej sieci
option broadcast-address 192.168.0.255;
#określamy nasz router sieciowy
option routers 192.168.0.1;
#określamy domenę naszej sieci
option domain-name "test-net";
#określamy pulę adresów sieciowych range 192.168.0.2 192.168.0.13;
#określamy Serwer Nazw
option domain-name-servers 192.168.0.1;
}

 

 

 

 

 

 

 

 

Logowanie na serwer:

login: admin

brak hasła

<tab> -2xtabulator wyświetla polecenia dostępne na danym poziomie

.. -powrót o poziom wyżej

> -polecenia wpisywane na mikrotik'u

# -polecenia wpisywane na komputerze stacjonarnym (sys. Linux)

 

Hierarchiczna konstrukcja polecen.

Wycofanie do poziomu nadrzednego:

..

Odwołanie do polecenia z poziomu nadrzednego poprzez / np :

/system reset

 

Polecenie sprawdzajace adresy ip :

Ip address> print

 

Dodanie nowego adresu:

ip address> add

adress: 192.168.10.15/24

interface: ether1

 

Dodawanie z poziomu nadrzednego dla ip address :

Ip> add address= 192.168.10.15/24 interface=ether1 broadcast=192.168.15.254

 

Blokowanie/Odblokowanie adresu :

Ip address> disable 1

Ip address> enable 1

(cyfra jest numerem przyporzadkowanym adresowi, można ja sprawdzic poleceniem print, które wypisze adresy)

 

Edytowanie adresu:

Ip address> Set 1 interface=ether1

 

 

 

KONFIGURACJA DHCP NA MIKROTIKU (1)

 

Widok po wywołaniu polecenia print :

> address network broadcast interface

1 192.168.10.15/24 192.168.10.0 192.168.10.255 ether1

 

Ustawiamy adres IP na komputerze hosta

# ifconfig eth1 192.168.10.15/24

 

Konfiguracja serwera DHCP na Mikrotiku.

 

Ustawiamy zakres przydzielanych adresów:

> ip pool add

name: dhcp-pool

ranges: 192.168.10.18-192.168.10.111

 

Ustawiamy siec w jakiej serwer bedzie działał oraz wpisujemy serwery DNS

> ip dhcp-server network add address=192.168.10.0/24 gateway=192.168.10.1

dns-server=11.11.11.11,11.22.33.44

 

Dodajemy serwer DNS

> ip dhcp-server add interface=ether1 address-pool-dhcp-pool

 

Restartujemy interfejsy hosta

#service network restart

 

Sprawdzamy czy zostały przydzielone adresy z puli.

podgladamy plik /var/lib/dhclient/dhclient-eth0.leases

 

Sprawdzamy czy otrzymalismy adresy DNS.

podgladamy plik /etc/resolv.conf

 

Przydzielamy statyczny adres dla jednego z klientów. Sprawdzamy komu zostały przydzielone adresy IP

> ip dhcp-server lease print

 

Ustawiamy statyczny adres

> ip dhcp-server lease make static

number: 1

 

KONFIGURACJA DHCP NA MIKROTIKU (2)

 

Resetujemy konfiguracje serwera:

> system > reset-configuration

 

Wyświetlenie dostępnych interfejsów:

> interface > print

 

Wchodzimy do poziomu IP i sprawdzamy adres IP

> ip > address > print

 

Polecenie print pokazało puste pole, wiec ustawiamy adres ip

> ip > address > add

 

Ustawiamy IP na 192.168.10.15 z maska 24 bitowa na interfejsie Ether 2.

Adres logiczny IP można ustawić dodatkowo poleceniem

> ip > address > add address=192.168.15.7/24 interface=ether2

 

Sprawdzamy poprawność wykonanych poleceń wpisując print, które wyświetli

nam przypisane adresy.

> ip > address > print

 

Polecenie enable/disable [numer rekordu] włączamy/wyłączamy dane IP na

interfejsie. Poleceniem 'set' możliwe jest edytowanie wpisów. Zmieniamy

interfejs dla 1 rekordu

> ip > address > set 1 interface=ether1

 

Polecenie remove usuwa dodany rekord. Usuwamy 1 rekord w tabeli

> ip > address > remove 1

 

Ustawiamy na komputerze stacjonarnym IP z podsieci oraz podłączamy do

mikrotik'a, w naszym przypadku do interfejsu ether2:

# ifconfig eth0 192.168.10.16/24

 

Ustawiamy zakres IP przydzielanych przez serwer

> ip > pool > add

name: siec

ranges: 192.168.10.5-192.168.10.66

 

Wchodzimy na poziom DHCP-server i dodajemy server:

> ip > dhcp-server > add

interface: ether2

 

Polecenie print pokazało że server został dodamy ale jest w stanie disable.

poleceniem set dodajemy nasz zakres adresow IP raz włączamy server

> ip > dhcp-server > set 0 address-pool=siec

> ip > dhcp-server > enable 0

 

Resetujemy ustawienia sieciowe na komputerze stacjonarnym:

# service network restart

 

Serwer przydzielił adres IP dla komputera stacjonarnego, w naszym przypadku

np. adres 192.168.10.66. Liste przydzielonych adresów IP można sprawdzić

na MikroTik'u przez polecenie

> ip > dhcp-server > lease > print

 

Aby dany rekord był adresem statycznym zawsze przydzielanym przez serwer

dla danego komputera wpisujemy polecenie:

> ip > dhcp-server > lease > make-static 0

 

Następnie ustawiamy bramę domyślną oraz dodajemy dwa DNS'y

> ip > dhcp-server > network > add address=192.168.10.0/24

gateway=192.168.10.15 dns-serwer=1.2.3.4,5.6.7.8

 

Sprawdzamy poprawność wpisanych poleceń na komputerze stacjonarnym,

resetując ustawienia sieci:

# service network restart

# route -n