LEKCJA 9 - SERWER DHCP

Wprowadzenie do lekcji

Dokument ten stanowi zwieńczenie trylogii o najważniejszych serwerach. Uruchamialiśmy serwer Dynamic Host Configuration Protocol, powoływaliśmy do życie Routing i NAT, przyszła więc pora na uruchomienie kolejnego istotnego w sieci serwera - serwera DNS.

Czym jest usługa DNS to raczej każdy wie, jednak na wszelki wypadek pozwolę sobie przypomnieć. DNS to skrót od Domain Name System i jest to hierarchiczny, rozproszony system nazw sieciowych, odpowiadający na zapytania o nazwy domen. Stwierdzenie "jest to usługa zamieniająca domenę na nazwę IP" jest dość powierzchownym stwierdzeniem i nadaje się na lekcje Informatyki w szkole podstawowej. DNS nie tylko tłumaczy domeny na adresy IP, ale może np. tłumaczyć adresy IP na domeny (tzw. RevDNS), a nawet domeny na domeny (CNAME). Hierarchiczny oznacza, że opiera się na jakiejś hierarchii, w tym przypadku będziemy mieć 13 głównym serwerów zwanych root-servers, do których są podłączone mniejsze serwery w różnych krajach. Do tych serwerów mogą być podłączone inne serwery np. operatorów domen, operatorów internetowych itd. Z kolei do tych serwerów często podłączone są serwery mniejsze – firmowe, domowe. Rozproszony oznacza, że nie skupia się w jednym miejscu. Serwery DNS rozproszone są po krajach, kontynentach, miastach itd.

Znając to, możemy przejść do instalacji naszego serwera DNS. Użyjemy do tego implementacji o nazwie BIND w wersji 9. Jest to serwer stworzony przez Internet Systems Consortium, które można kojarzyć z serwera DHCP. BIND to skrót od Berkley Internet Name Domain. Wpierw jednak warto zaktualizować repozytoria i pakiety na naszym serwerze. Jeżeli zaś chodzi o dalsze wyjaśnienia na temat DNS, to będę wszystko tłumaczył w dalszej części tego dokumentu.

I. Instalacja ISC DHCP

9-1

Zaczynamy od tego, że DHCP jest jedynie protokołem, a my musimy wybrać jego implementację. Jednym z najpopularniejszych rozwiązań jest ISC DHCP, stworzone przez Internet Systems Consortium (ISC). Aby zainstalować to oprogramowanie, używamy poleceń:

$ sudo apt update
$ sudo apt install isc-dhcp-server

II. Konfiguracja ISC DHCP

9-2

Najpierw sprawdzamy, czy nasza usługa jest aktywna. Wykonujemy to za pomocą polecenia:

$ systemctl status isc-dhcp-server

W tym momencie interesuje nas pole Active. Aby wyjść z podglądu statusu, naciskamy klawisz q lub skrót Ctrl + C. Na tym etapie ważne jest, aby usługa miała status FAILED (inactive). Jeśli nasza usługa mimo to się uruchomiła, musimy ją zatrzymać:

$ sudo systemctl stop isc-dhcp-server
9-3

Teraz musimy ustalić, na którym interfejsie serwer DHCP będzie nasłuchiwał żądań. W tym celu przechodzimy do edycji pliku /etc/default/isc-dhcp-server:

$ sudo nano /etc/default/isc-dhcp-server
9-4

Wcześniej skonfigurowałem nazwę dla naszego interfejsu w Netplanie i w naszym przypadku nosi on nazwę LAN, dlatego wpisujemy ją w parametrze INTERFACESv4. Po wprowadzeniu zmian zapisujemy plik i wychodzimy z edytora.

9-5

Drugi plik konfiguracyjny znajduje się w katalogu /etc/dhcp/. Przechodzimy do niego i tworzymy kopię zapasową oryginalnego pliku dhcpd.conf. Wykonujemy to za pomocą polecenia:

$ sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.old

Sposób nazwania kopii zapasowej nie ma większego znaczenia – w naszym przypadku dodajemy rozszerzenie .old.

9-6

Skoro utworzyliśmy już kopię, możemy przejść do edycji pliku:

$ sudo nano /etc/dhcp/dhcpd.conf

Pierwszą zmianą, którą wprowadzimy, będzie odkomentowanie linii authoritative; (usuwamy znak #).

9-7

Następnie szukamy linii "A slightly different configuration for an internal subnet". Przedstawia ona przykładową konfigurację serwera DHCP. Usuwamy znaki # od linii subnet... aż do zamykającego nawiasu klamrowego. Nie usuwamy znaku # z linii zawierającej tekst "A slightly...", gdyż służy ona wyłącznie jako ułatwienie w lokalizacji odpowiedniego fragmentu. Jeśli odkomentujemy tę linię komentarza, serwer się nie uruchomi.


Przeanalizujmy teraz poszczególne parametry odkomentowanej sekcji:

  • subnet X netmask Y { – parametr ten definiuje podsieć obsługiwaną przez serwer DHCP, dostarczając mu podstawowych informacji o niej. W miejscu X wpisujemy adres podsieci, natomiast w miejscu Y jej maskę w formacie dziesiętnym (np. 255.255.255.0);
  • range X Y; – definiuje zakres, w jakim mają być przydzielane adresy IP klientom, gdzie X oznacza pierwszy adres z zakresu, a Y adres ostatni;
  • option domain-name-servers X, Y; – w ramach tego parametru wpisujemy adresy serwerów DNS przekazywane klientom. Możemy podać pojedynczy adres IP lub kilka adresów oddzielonych przecinkami (bez spacji);
  • option domain-name "X"; – w tym miejscu podajemy nazwę domenową naszej sieci. Jeśli jej nie posiadamy, możemy pozostawić wartość domyślną lub usunąć tę linię;
  • option subnet-mask X; – określa maskę podsieci przekazywaną klientom w postaci dziesiętnej;
  • option routers X; – wskazuje adres bramy domyślnej w naszej sieci;
  • option broadcast-address X; – określa adres rozgłoszeniowy podsieci;
  • default-lease-time X; – domyślny czas dzierżawy adresu IP, wyrażony w sekundach;
  • max-lease-time X; – maksymalny czas dzierżawy, o jaki klient może zawnioskować, również podawany w sekundach.
9-8

Widzimy tutaj prawidłowo skonfigurowany plik.

9-9

Nadszedł czas na uruchomienie naszej usługi i zweryfikowanie, czy wszystko działa poprawnie. Wykonujemy to za pomocą następujących poleceń:

$ sudo systemctl restart isc-dhcp-server
$ sudo systemctl status isc-dhcp-server

Ważne jest, aby na tym etapie karta sieciowa (w naszym przypadku LAN) była podłączona i aktywna – w przeciwnym razie usługa nie uruchomi się. Jeśli mimo to otrzymujemy status FAILED, możemy spróbować odczytać logi systemowe, choć rzadko dają one jednoznaczną odpowiedź. W takiej sytuacji najbardziej prawdopodobną przyczyną są błędy w pliku konfiguracyjnym.

9-10

Na komputerze klienckim przechodzimy do ustawień karty sieciowej. W przypadku systemu Ubuntu Desktop wybieramy opcję "Automatycznie (DHCP)". W systemie Windows opcja ta nosi nazwę "Uzyskaj adres IP automatycznie".

9-11

Przechodzimy do zakładki z informacjami o połączeniu i sprawdzamy, czy komputer uzyskał pierwszy adres IP z zdefiniowanego przez nas zakresu, poprawną bramę domyślną oraz adresy serwerów DNS.

9-12

Po wykonaniu polecenia ip a również widzimy, że klient otrzymał właściwą konfigurację. Aby upewnić się, że komunikacja przebiega bez zakłóceń, sprawdzamy łączność z serwerem za pomocą polecenia ping.

9-13

System Windows również poprawnie pobiera konfigurację sieciową.

9-14

Aktualne dzierżawy adresów możemy zobaczyć za pomocą komendy:

$ sudo dhcp-lease-list

W naszym przypadku na liście widnieją dwie pozycje – jedna dla systemu Ubuntu, druga dla systemu Windows.

9-15

Widzimy, że serwer również komunikuje się z klientami.

III. Rezerwacja adresu

9-16

Aby zarezerwować stały adres IP dla wybranego urządzenia, musimy powrócić do edycji pliku dhcpd.conf, odnaleźć sekcję host fantasia, która znajduje się poniżej naszej konfiguracji podsieci, a następnie ją odkomentować.

9-17

W miejsce nazwy "fantasia" możemy wpisać własną nazwę identyfikującą komputer kliencki. Wpis hardware ethernet uzupełniamy o fizyczny adres MAC karty sieciowej klienta, natomiast w parametrze fixed-address podajemy adres IP, który ma zostać na stałe przypisany do urządzenia.

9-18

Ponownie restartujemy serwer i sprawdzamy jego status:

$ sudo systemctl restart isc-dhcp-server
$ sudo systemctl status isc-dhcp-server
9-19

Odnawiamy dzierżawę adresu IP na komputerze klienckim, dla którego przygotowaliśmy rezerwację, i upewniamy się, że przydzielony został właściwy, stały adres.