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.
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
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
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
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.
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.
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 #).
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:
Widzimy tutaj prawidłowo skonfigurowany plik.
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.
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".
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.
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.
System Windows również poprawnie pobiera konfigurację sieciową.
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.
Widzimy, że serwer również komunikuje się z klientami.
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ć.
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.
Ponownie restartujemy serwer i sprawdzamy jego status:
$ sudo systemctl restart isc-dhcp-server $ sudo systemctl status isc-dhcp-server
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.