Serwer DHCP w oparciu o system Linux

# Przydział adresów IP
Host może uzyskać adres IP w dwojaki sposób:
– statycznie przypisany przez administratora – stosowany w przypadku serwerów
– dynamicznie z wykorzystaniem protokołu DHCP – zalecane w przypadku hostów, które nie wymagają konkretnego adresu IP

Jest jeszcze trzeci sposób, hybrydowy – przypisanie statycznego adresu IP, ale z wykorzystaniem protokołu DHCP. Na serwerze definiujemy jaki adres IP powinien otrzymać konkretny host.

# Co to jest wspomniany wyżej DHCP?
DHCP (Dynamic Host Configuration Protocol) jest protokołem sieciowym, który automatycznie przypisuje adresy IP komputerom klienckim w sieci. Eliminuje to żmudną pracę polegającą na ręcznym przypisywaniu adresu IP każdemu urządzeniu w dużej sieci. Ponadto usuwa konflikt, który występuje z powodu błędnego przypisania tego samego adresu IP kilku hostom. Wśród danych konfiguracyjnych oferowanych przez protokół możemy znaleźć:
– adres IP,
– maskę podsieci,
– adres IP bramy domyślnej,
– adresy serwerów DNS,
– wartość MTU,
– adres serwera TFTP,
i wiele więcej.

DHCP używa protokołu UDP i pracuje na porcie 68 (po stronie klienta) oraz 67 (po stronie serwera).

# Komunikaty wykorzystywane w protokole DHCP
DHCPDISCOVER – klient DHCP wysyła ten komunikat w trybie broadcast, aby znaleźć serwer DHCP (adres IP nadawcy: 0.0.0.0, adres IP odbiorcy: 255.255.255.255, port: UDP 68)
DHCPOFFER – serwery DHCP odpowiadają tym komunikatem na komunikat DHCPDISCOVER, oferując dzierżawę adresu IP klientowi (adres IP odbiorcy: 255.255.255.255, adres IP nadawcy: swój własny adres, port: UDP 67) – pakiet zawiera proponowaną konfigurację, jaką host może otrzymać
DHCPREQUEST — klient akceptuje pierwszą ofertę wysłaną przez DHCPOFFER, która oferowała dzierżawę adresu IP, żąda tego adresu (także jest to pakiet rozgłoszeniowy, gdyż klient nie posiada praw do korzystania z zaproponowanego adresu IP; adres IP odbiorcy: 255.255.255.255, adres IP nadawcy: 0.0.0.0)
DHCPACK — jeżeli adres, którego żąda klient może być użyty, to serwer akceptuje to żądanie wysyłając właśnie ten komunikat (adres IP nadawcy: adres serwera DHCP, adres IP odbiorcy: 255.255.255.255)
DHCPNAK — jeżeli adres, którego żąda klient nie może być użyty, to serwer wysyła komunikat DHCPNAK, po tym klient musi rozpocząć cały proces komunikacji z serwerem od nowa
DHCPDECLINE — jeżeli klient określi, że oferowana mu konfiguracja parametrów jest nieprawidłowa, wysyła serwerowi komunikat DHCPDECLINE, po tym klient musi rozpocząć cały proces komunikacji z serwerem od nowa
DHCPRELEASE — klient wysyła ten komunikat, aby odrzucić przydzielony mu przez serwer adres IP i anulować dzierżawę adresu IP

# Odświeżanie dzierżawy
Każdy adres IP przydzielany z serwera ma ograniczenia czasowe. W tle usługi pracują dwa zegary:
T1, odmierza połowę czasu użytkowania
T2, odmierza 87,5% pełnego użytkowania.
Po upływanie czasu T1 klient wysyła DHCPREQUEST do serwera z zapytaniem, czy serwer jest w stanie przedłużyć czas użytkowania. Jeżeli serwer ma taką możliwość odpowiada wiadomością DHCPACK i przydziela nowy czas, resetując T1 i T2.
Jeżeli po upływie T2, host nie otrzyma DHCPACK rozpoczyna rebingind status – klient musi wysłać DHCPREQUEST, żeby uzyskać przedłużenie czasu użytkowania. Serwer może odpowiedzieć na to żądanie DHCPACK. Jeżeli jednak nie odpowie, klient musi zażądać nowego adresu IP (wkracza ponownie w mechanizm, który rozsyła zapytania do wszystkich serwerów DHCP w sieci).

 

INSTALACJA I KONFIGURACJA SERWERA ISC-DHCP-SERVER

# Statyczny adres IP
W przypadku serwera DHCP koniecznym jest ustawienie statycznego adresu IP. Można to zrobić za pomocą np. nmtui, nmcli, netplan (w przypadku systemu Ubuntu) albo edytując odpowiednie pliki konfiguracyjne.

# Instalacja serwera
Oprogramowanie serwera DHCP jest natywnie dostępne w systemowych repozytoriach wszystkich dystrybucji pod nazwą isc-dhcp-server.
  apt update
          apt install isc-dhcp-server

Po instalacji pakietu utworzona zostaje usługa o takiej samej nazwie. Zarządzanie nią:
          systemctl start/stop/restart/enable/disable/reload isc-dhcp-server

# Zdefiniowanie na jakich interfejsach ma działać serwer DHCP
W katalogu /etc/default po instalacji został utworzony plik isc-dhcp-server, wewnątrz którego w dyrektywie INTERFACES znajdują się wszystkie interfejsy, na jakich nasłuchuje serwer. Istnieje możliwość, aby jeden serwer świadczył usługi dla kilku podsieci. Możemy to osiągnąć w dwojaki sposób:
– podsieć -> oddzielna karta sieciowa
– podsieć -> oddzielny VLAN na karcie sieciowej (wówczas jedna karta może być przypisana do kilku VLANów; port na switchu skonfigurowany w trybie TRUNK)

Do sprawdzenia jakie karty sieciowe mamy zainstalowane w naszym systemie możemy wykorzystać wiele narzędzi, m. in. :
ip a
ifconfig
nmcli

Karty sieciowe w systemach Linux mają nazewnictwo: ethx (stary standard), enpxsy (nowy standard).

Jeżeli wiemy już, jakie karty sieciowe mamy w naszym systemie wpiszmy je do powyższego pliku. Dla karty eth0 rekord będzie wyglądał następująco:
  INTERFACES=”eth0″

Wiele kart oddzielamy spacją. Dla karty eth0 i eth1 będzie to wyglądało tak:
    INTERFACES=”eth0 eth1″

# Konfiguracja serwera
Cała konfiguracja serwera znajduje się w jednym pliku – /etc/dhcp/dhcpd.conf. Jego budowa to od góry zmienne globalne, a poniżej zdefiniowane podsieci.

Przejrzymy na początku zmienne globalne.
-> Czas dzierżawy
default-lease-time 600; – domyślny czas dzierżawy wyrażony w sekundach
max-lease-time 7200; – maksymalny czas dzierżawy, po którego upływanie host traci konfigurację IP

-> Mianowanie serwera do roli oficjalnego w sieci
authoritative;

-> Zdefiniowanie nazwy domenowej dla wszystkich podsieci
option domain-name „local”;

# Definiowanie podsieci
Na początku musimy zdefiniować adres IP podsieci wraz z maską, dla jakiej serwer ma przydzielać adresy. Tutaj ważne jest, aby adres IP przypisany do naszego serwera znajdować się w tej samej podsieci. W przypadku kilku kart sieciowych i kilku podsieci to właśnie na tej podstawie serwer rozpoznaje na którą kartę kierować odpowiednie propozycje adresów IP.

subnet 192.168.1.0 netmask 255.255.255.0 {

Następnie zdefiniujmy zakres adresów IP, jakie serwer może przydzielać w danej podsieci. Należy pamiętać, aby każdy rekord kończyć średnikiem.

range 192.168.1.100 192.168.1.150;

Określenie adresu IP bramy domyślnej (routera) wygląda następująco:

  option routers 192.168.1.1;

Zdefiniowanie serwerów nazw (DNS) odbywa się z wykorzystaniem dyrektywy option domain-name-servers. Serwery oddzielamy przecinkami.

  option domain-name-servers 8.8.8.8, 8.8.4.4;

Możemy również tutaj zdefiniować czasy dzierżawy dla danej podsieci. Zostaną wówczas nadpisane wartości globalne.
Cała konfiguracja dla podsieci wygląda następująco:

        subnet 192.168.1.0 netmask 255.255.255.0 {
          range 192.168.1.100 192.168.1.150;
          option routers 192.168.1.1;
          option domain-name-servers 8.8.8.8, 8.8.4.4;
          }

# Serwer obsługujący kilka podsieci
Aby serwerem działał w kilku podsieciach po odpowiednim przypisaniu interfejsów w pliku /etc/default/isc-dhcp-server musimy zdefiniować kolejne podsieci w pliku konfiguracyjnym dhcpd.conf. Dla dwóch podsieci zawartość może wyglądać następująco:

          subnet 192.168.1.0 netmask 255.255.255.0 {
          range 192.168.1.100 192.168.1.150;
          option routers 192.168.1.1;
          option domain-name-servers 8.8.8.8, 8.8.4.4;
          }

          subnet 192.168.13.0 netmask 255.255.255.0 {
          default-lease-time 300;
          max-lease-time 600;
          range 192.168.13.60 192.168.13.200;
          option routers 192.168.13.1;
          option domain-name-servers 192.168.13.1, 1.1.1.1;
          }

# Statyczne przypisanie adresu IP dla konkretnego hosta
Serwer DHCP umożliwia również zdefiniowanie konkretnego adresu IP dla danego hosta. Wykorzystuje do tego MAC adres. Aby to wykonać należy w pliku konfiguracyjnym wpisać:

    host nazwa_hosta {
          hardware ethernet 00:00:00:00:00:EC;
          fixed-address 192.168.1.17;
          }

hardware ethernet – w tym miejscu wpisujemy MAC adres rozdzielony :
fixed-address – definiujemy jaki adres IP powinien otrzymać host o danym MAC adresie

# Lista dzierżawionych adresów IP
Serwer zapisuje wszystkie dzierżawy w pliku /var/lib/dhcp/dhcpd.leases Możemy tam znaleźć MAC adres klienta oraz czas trwania dzierżawy (jej początek i koniec).


Przykładowe ćwiczenie do powyższego wpisu

W celu świadczenia usług na najwyższym poziomie stosujemy pliki cookies, które będą zamieszczane w Państwa urządzeniu (komputerze, laptopie, smartfonie). W każdym momencie mogą Państwo dokonać zmiany ustawień Państwa przeglądarki internetowej i wyłączyć opcję zapisu plików cookies. View more
Zaakceptuj