# » course » networking-professional » Linux.06

L06 DNS, serwer nazw domenowych

Serwery DNS są jednym z najistotniejszych elementów internetu. System nazw umożliwia nam automatyczne tłumaczenie nazw mnemonicznych (zrozumiałych dla człowieka np. www.wp.pl) na adresy IP (np. 212.77.100.101). Na naszym serwerze uruchomimy lokalny serwer DNS tak aby można było łączyć się z klientem i serwerem za pomocą przyjaznych nazw.

6.1 Instalacja serwera BIND9

Dla systemu Linux powstało wiele programów pełniących rolę serwera DNS, jednakże największą popularnością (nieprzerwanie od wielu lat) cieszy się serwer BIND. Oprogramowanie BIND (ang. Berkeley Internet Name Domain). Serwer BIND podobnie jak isc-dhcp, został stworzony przez Internet Systems Consortium (https://www.isc.org/downloads/bind/). Paczka bind9 znajduje się w standardowym repozytorium Debiana.

Innym popularnym rozwiązaniem jest dnsmasq.

Instalacja BIND'a:


# apt install bind9

Po prawidłowej instalacji usługa bind powinna automatycznie się uruchomić. Domyślnie bind nie posiada konfiguracji żadnej domeny. W tym momencie jedyną jego funkcją jest funkcja cache, znaczy to że od tego momentu możemy ustawiać IP naszego serwera jako serwera DNS i zapytania do niego przesłane będą przekazywane do innych serwerów a odpowiedzi zapisywane w pamięci podręcznej naszego serwera (funkcja ta przyśpiesza np. wczytywanie stron WWW). Widoczne jest to zwłaszcza podczas powtórnego odpytania systemu DNS o adres, mamy zdecydowanie krótszy czas odpowiedzi z serwera.

6.2 Konfiguracja klienta do korzystania z lokalnego serwera DNS

Lokalny serwer DNS który uruchomiliśmy będzie nam umożliwiał skonfigurowanie domeny lokalnej oraz przyśpieszenie procesu rozwiązywania nazw. W celu konfiguracji klienta do korzystania z naszego serwera można ręcznie wpisać adres IP serwera w konfiguracji połączenia, jednakże dużo lepszym rozwiązaniem jest zmiana ustawień serwera DHCP tak, aby automatycznie przypisywał naszym klientom nasz lokalny serwer DNS.

  1. Zmieniamy ustawienie serwera BIND w pliku /etc/bind/named.conf.options dodając do sekcji options następujący blok:
  2. Zmieniamy ustawienie serwera BIND w pliku /etc/bind/named.conf.options dodając do sekcji options następujący blok:
    
    	forwarders {
    		208.67.222.222;
    	};
    	dnssec-validation no;
    

    Znaczenie poszczególnych opcji:

    • forwarders – sekcja, w której zamieszczamy adresy serwerów, do których będą przekazywane zapytania kierowane poza naszą domenę (208.67.222.222 – OpenDNS)
    • dnssec-validation – wyłączenie sprawdzania DNSSEC

    DNSSEC (ang. DNS Security Extensions) - rozszerzenie systemu DNS mające na celu zwiększenie jego bezpieczeństwa. DNSSEC zapewnia uwierzytelnianie źródeł danych (serwerów DNS) za pomocą kryptografii asymetrycznej oraz podpisów cyfrowych.

  3. Restartujemy serwer bind:
    
    # service bind9 restart
    
  4. Zmiana konfiguracji DHCP w pliku /etc/dhcp/dhcpd.conf
    
    subnet 172.16.1.0 netmask 255.255.255.0 {
    	range 172.16.1.100 172.16.1.200;
    	option domain-name-servers 172.16.1.1;
    	option routers 172.16.1.1;
    }
    

    Zamieniamy opcję domain-name-serwers na adres naszego serwera – 172.16.1.1

  5. Restartujemy serwer DHCP
    
    # service isc-dhcp-server restart
    
  6. Na systemie klienckim pobieramy ponownie adres z serwera poleceniem: ipconfig /renew
  7. Sprawdzamy poleceniem ipconfig /all czy adres serwera DNS został prawidłowo przydzielony przez serwer DHCP
  8. Testujemy narzędziem nslookup działanie naszego serwera DNS np. poleceniem: nslookup polska.pl
    Jeśli zapytanie zostało prawidłowo rozwiązane, np. (polska.pl = 89.174.23.111) to nasz serwer spełnia rolę serwer proxyDNS.

6.3 Konfiguracja własnej domeny lokalnej

Konfigurację domeny przeprowadzimy na przykładzie domeny nazwa.local ponieważ jest to domena local nie będzie ona osiągalna na hostach spoza naszej sieci lokalnej i na hostach które będą korzystały z innego serwera DNS niż nasz lokalny.

1. Konfigurujemy nową strefę DNS w pliku /etc/bind/named.conf.local


zone "nazwa.local" {
	type master;
	file "/etc/bind/nazwa.local";
};

Znaczenie poszczególnych opcji:

2. Sprawdzamy poprawność wprowadzonych zmian poleceniem named-checkconf


# named-checkconf /etc/bind/named.conf

3. Tworzymy plik konfiguracyjny naszej domeny /etc/bind/nazwa.local


$TTL 3600
@ IN SOA nazwa.local. admin.nazwa.local. (
	2020122001	; Serial
	86400		; Refresh [1h]=3600
	3600		; Retry   [10m]=600
	3600000		; Expire  [1d]=86400
	1209600		; Negative Cache TTL [1h]=600
)
nazwa.local. IN NS ns1.nazwa.local.
nazwa.local. IN MX 10 poczta.nazwa.local.
@ IN A 172.16.1.1
ns1 IN A 172.16.1.1
poczta IN A 172.16.1.1
www IN A 172.16.1.1
windows IN A 172.16.1.22
serwer IN CNAME www

Najważniejsze typy rekordów DNS oraz ich znaczenie:

Dodatkowe opcje konfiguracji znajdziesz w dokumentacji Debiana: https://wiki.debian.org/Bind9 oraz w dokumencie: BIND 9 Administrator ReferenceManual

4. Sprawdzamy poprawność konfiguracji rekordów poleceniem named-checkzone

# named-checkzone nazwa.local /etc/bind/nazwa.local

5. Restartujemy serwer bind

# service bind9 restart

6. Żeby serwer (host) rozpoznawał także domenę, w której się znajduje, trzeba przeedytować plik /etc/resolv.conf i ustawić serwer jako podstawowy DNS


domain nazwa.local
nameserver 172.16.1.1

UWAGA
domenę w resolv.conf dodajemy jedną, odpowiednią dla domeny do jakiej należy sam serwer (host) a nie wszystkie obsługiwane przez serwer DNS domeny.

7. Następnie w celu przypisania właściwej domeny dla hostów ponownie zmieniamy konfiguracje serwera DHCP w pliku /etc/dhcp/dhcpd.conf


option domain-name "nazwa.local";

8. Restartujemy serwer DHCP

# service isc-dhcp-server restart

9. Ponownie pobieramy adres IP (i domenę) na systemie klienckim (poprzez polecenie: ipconfig /renew)


C:\Users\Administrator>ipconfig /renew
Konfiguracja IP systemu Windows
Karta Ethernet Połączenie lokalne:
Sufiks DNS konkretnego połączenia : nazwa.local
Adres IPv6 połączenia lokalnego . : fe80::f495:64b5:90f3:defb%14
Adres IPv4. . . . . . . . . . . . : 172.16.1.22
Maska podsieci. . . . . . . . . . : 255.255.255.0
Brama domyślna. . . . . . . . . . : 172.16.1.1

10. Testujemy działanie naszej domeny poleceniem nslookup oraz ping


C:\Users\Administrator>nslookup www.nazwa.local

C:\Users\Administrator>nslookup windows.nazwa.local

C:\Users\Administrator>ping serwer.nazwa.local

W razie problemów w tłumaczeniem nazw na adresy, można wyczyścić pamięć poręczną dns na systemie klienckim za pomocą polecenia: ipconfig /flushdns

Po tak przeprowadzonej konfiguracji serwera DNS, można w naszej sieci lokalnej komunikować się przy pomocy przypisanych do hostów nazw domenowych. Ułatwi to konfigurację dalszych usług na serwerze, ponieważ będzie można użyć nazw domenowych zamiast adresów IP.