Dydaktyka:
FeedbackRodzaje serwerów – master (pri), slave (sec)
W trakcie laboratoriów jest używany serwer DNS BIND w wersji 9 którego rozwój dba ISC.
BIND9 pozwala tworzyć zarówno serwery authoritative jak i caching (i serwery pełniące obie role naraz, co zwykle jest odradzane).
Inne popularne authoritative DNS to NSD i Knot DNS.
Inne popularne caching DNS to Unbound czy dnsmasq (który łączy w sobie serwer DNS i DHCP).
Format plików stref (zone files) opisujących informacje znajdujące się w DNS (a pochodzący z BIND) stał się standardem używanym do konfiguracji rekordów DNS w większości serwerów DNS.
Standardowa nazwa głównego programu serwera DNS to named
(od name daemon).
Uwaga: ścieżki, polecenia i przykłady named.conf są w konwencji przyjętej w OpenSUSE.
Pliki stref są standardowe.
Uwaga: przykłady są dla adresu lab-net-1 i domeny example.com. Proszę je odpowiednio zmodyfikować
Przykładowa konfiguracja authoritative serwera bind: bind9_example_config.tar.xz
Toy example konfiguracji caching serwera bind:
options { querylog yes; // loguje wszystkie zapytania recursion yes; // pozwala wykonywać zapytania rekursywne };
Uruchomienie w/w konfiguracji w trybie pierwszoplanowym z logowaniem na konsolę: named -g -c named.conf
Sensowniejszy przykład konfiguracji jest np. tutaj.
Aby uruchomić bind9 do testów wykonaj komendę:
named -g
Można ręcznie podać inną niż domyślną ścieżkę do głównego pliku z konfiguracją:
named -g -c sciezka/do/named.conf
Do sprawdzenia konfiguracji możesz wykonać komendę:
named-checkconf
natomiast do sprawdzenia pliku strefy:
named-checkzone example.com sciezka/do/pliku/example.com.zone
Aby uruchomić bind9 w dystrybucjach używających systemd, należy:
systemctl start named
journalctl _SYSTEMD_UNIT=named.service
systemctl reload named ; systemctl status named
Główny plik konfiguracyjny BIND9 to /etc/named.conf
lub /etc/bind/named.conf
(ref) i jest podzielony na sekcje, np:
acl nazwa { … }; options { nazwa_opcji wartość; … }; zone nazwa { … };
Plik pozwala on na skonfigurowanie:
options
[1]:directory katalog
– katalog względem którego będą liczone wszystkie względne ścieżkiallow-query …
– ogranicza kto może wysyłać zapytania [2], np: allow query { any; };
- ktokolwiek; allow query { 127.0.0.1; 172.16.0.0/16; };
- tylko podane IP/sieci; allow query { localhost; };
wszystkie IP tego komputera; recursion no|yes
(domyślnie wyłączone) – pozwala działać jako caching nameserverforwarders …
– lista IP, do których mają być przesyłane nieobsłużone zapytania (zmienia serwer w pośrednika) [3]allow-recursion …
– ogranicza kto może wysyłać zapytania rekursywne [2]zone
definiują strefy.zone "pelna.nazwa.domenowa.pl" IN { type master; file "sciezka_do/pliku_strefy.zone"; };
IN oznacza INternet (alternatywą jest np. CHaos)
zone "pelna.nazwa.domenowa.pl" IN { type slave; masters { 10.0.0.1; }; # lista adresów IP serwerów master file "sciezka_gdzie/serwer_stworzy_plik_strefy.zone"; };
zone "130.32.254.150.in-addr.arpa" IN { type master; file "master/130.32.254.150.in-addr.arpa.zone"; }; ## Rzadko deleguje się rozwiązywanie pojedynczych adresów IP; częściej całych sieci, np: #zone "32.254.150.in-addr.arpa" IN { # type master; # file "master/32.254.150.in-addr.arpa.zone"; #};
Zadanie 8. Sprawdź gdzie znajduje się główny plik konfiguracyjny programu bind. Sprawdź w jakim katalogu na twoim systemie bind będzie domyślnie szukać plików stref. Wyświetl zawartość tego katalogu.
Zadanie 9. Jakie pliki stref są dostarczane z serwerem bind9 (i umieszczone w OpenSUSE w katalogu /var/lib/named
)?
Składnia plików stref:
;
@
oznacza nazwę strefy (z pliku named.conf
, nie z nazwy pliku strefy).
(kropki) po tekście w dowolnym miejscu gdzie BIND spodziewa się nazwy domeny spowoduje doklejenie .@
na koniec tekstu; stąd do podania adresu bezwzględnego trzeba zakończyć go kropką, np: domain.com.
$TTL 1H ; czas jaki ważny będzie cache dla poniższych rekordów ; jednostki: sekundy @ IN SOA ns root ( 2015121600 ; serial number 6H ; / refresh time 1H ; slave | time to retry refresh 1W ; \ slave expiry after no refresh 1D ) ; minimum TTL for caching NS; on timeout NXDOMAIN IN NS ns IN A 150.254.32.130 ns IN A 150.254.32.130 www IN CNAME @
Zadanie 10. Włącz bind i przetestuj działanie przykładowej konfiguracji. Następnie przerób konfigurację tak, Twój komputer działał jako serwer nazw dla wybranej domeny (innej niż example.com).
$TTL 1H @ IN SOA ns.example.com. root.example.com. ( 2015121600 ; serial 6H ; refresh 1H ; retry 1W ; expiry 1D ) ; minimum IN NS ns.example.com. IN PTR example.com.
$TTL 1H @ IN SOA ns.example.com. root.example.com. ( 2015121600 ; serial 6H ; refresh 1H ; retry 1W ; expiry 1D ) ; minimum IN NS ns.example.com. 1 IN PTR somehost.example.com. 2 IN PTR anotherhost.example.com. # ... 130 IN PTR example.com. # ...
Zadanie 11. Dodaj przykładowe rekordy typu A, CNAME, MX i TXT i odpytaj o nie. Dla rekordu CNAME podaj nazwę domenową spoza swojej domeny.