Dydaktyka:
FeedbackTo jest stara wersja strony!
http://www.cs.put.poznan.pl/ddwornikowski/sieci/sieci2/dns.html
Przygotowanie do laboratoriów w salach 1.6.16 / 1.6.18
Na początku zajęć pobierz skrypt dns_lab_setup.sh i wykonaj go z uprawnieniami roota, podając jako argument adres IP podany przez prowadzącego.
Nazwa domenowa [2]
Budowa nazwy domenowej: struktura drzewiasta, korzeń.
Top Level Domain [3], lista
Fully qualified domain name – pełna nazwa domenowa [1]
Zadanie 1. Porównaj wynik poniższych poleceń:
$ ping -c1 lab-net-1 $ ping -c1 lab-net-1.cs.put.poznan.pl
Serwery nazw można podzielić ze względu na pełnione zadanie na:
Klienci odpytujący DNS korzystają z UDP1)
Do odpytywania serwerów DNS można używać np. komend:
dig -hnslookup (zacznij od przeczytania man nslookup)dnstracer (pozwala przejść całe drzewo DFSem, np: dnstracer -c -o -s . assets.publishing.service.gov.uk. )Zadanie 2. Przetestuj poniższe zapytania:
host lab-net-1.cs.put.poznan.pl host lab-net-1.cs.put.poznan.pl. host lab-net-1 dig lab-net-1.cs.put.poznan.pl dig +noall +answer lab-net-1.cs.put.poznan.pl dig +short lab-net-1.cs.put.poznan.pl dig www.cs.put.edu.pl dig wp.pl host wp.pl
Wybór typu rekordu:
host -t typ nazwa_domenowa np: host -t MX put.poznan.pl dig nazwa_domenowa typ np: dig put.poznan.pl AAAAPytanie o "wszystkie" rekordy:
host -a [-v] nazwa_domenowadig nazwa_domenowa anyZadanie 3. Odpytaj kilka domen o wszystkie rekordy. Jakie typy rekordów głównie widzisz?
Ważniejsze typy rekordów:
| A | Adres IPv4 |
| AAAA | Adres IPv6 |
| NS | Serwer nazw |
| SOA | Start of Authority (omówione dokładniej przy konfiguracji serwera DNS) |
| MX | Serwer odbierający pocztę dla domeny |
| CNAME | Alias na inną nazwę domenową ( np. host -t cname www.cs.put.edu.pl dig unixlab.cs.put.poznan.pl cname ) |
| TXT | Dowolny tekst (dosłownie dowolny). Używany np. na potrzeby mechanizmów walki ze spamem – SPF i DKIM) ( przykłady: Cokolwiek: dig akamai.net txt Cokolwiek: host -t txt lenovo.com SPF: dig student.put.poznan.pl txt DKIM: host -t txt 20161025._domainkey.googlegroups.com ) |
| SRV | Host i port usługi, ( np. dla klientów xmpp: dig _xmpp-client._tcp.jabber.org srv dla klientów minecrafta: host -t srv _minecraft._tcp.cubecraft.net w domenie AD: https://technet.microsoft.com/en-us/library/cc961719.aspx ) |
| PTR | Nazwa domenowa (patrz niżej) |
Pozostałe: https://en.wikipedia.org/wiki/List_of_DNS_record_types
Zadanie 4a. Wykonaj zapytania o odwzorowanie odwrotne:
host 150.254.30.43 dig -x 150.254.30.43 dig @8.8.8.8 -x 150.254.30.43 host -t ptr 43.30.254.150.in-addr.arpa dig 43.30.254.150.in-addr.arpa ptr
Zadanie 4b. Zadaj zapytania odwrotne o adres IPv6. Jaka domena jest użyta?
home.cern,
zapytam się root serwera gdzie jest serwer nazw dla cern.
Serwer nazw jest pod adresem a2.nic.cern,
więc żeby dowiedzieć się, gdzie jest a2.nic.cern,
zapytam się root serwera gdzie jest serwer nazw dla cern…“
Jeśli NS jest w tej samej domenie, którą rozwiązuje, to razem z rekordem NS w nadrzędnym serwerze nazw musi być też rekord A lub AAAA tzw. glue record
Zadanie 5. Sprawdź jak wygląda wynik komendy: dig nask.pl @a-dns.pl. Które rekordy to glue records?
System operacyjny Linux używa serwera DNS skonfigurowanego w pliku /etc/resolv.conf. Dokumentacja możliwych wpisów w tym pliku: man resolv.conf
Ręczne wybranie serwera:
host name server, np: host pl.wikipedia.org dns.tpsa.pl host pl.wikipedia.org one.one.one.onedig @server name, np: dig @dns.tpsa.pl pl.wikipedia.org dig @one.one.one.one pl.wikipedia.orgRodzaje zapytań [1]:
dig nazwa +tracedig @a.root-servers.net cs.put.poznan.pl dig @a-dns.pl cs.put.poznan.pl ……… dig nazwa +recurse
Przykładowe adresy publicznych serwerów DNS:
9.9.9.9 IBM (Quad9)Zadanie 6. Wykonaj zapytanie iteracyjne dla przykładowej nazwy domenowej
Serwery authoritative i caching – przypomnienie
Zadanie 7a.
Porównaj odpytanie o stronę poznan.pl programem dig następujących serwerów DNS:
dns.tpsa.pl recpubns1.nstld.net ordns.he.net bilbo.nask.org.pl
Co oznacza druga kolumna wyników? Czym różnią się flagi odpowiedzi?
Bezpieczeństwo:
Prywatność:
Zadanie 7b. Porównaj wynik zapytania o adres dowolnej strony z listy: https://hazard.mf.gov.pl/ pytając różne serwery DNS.
Rodzaje 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
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 namedjournalctl _SYSTEMD_UNIT=named.servicesystemctl reload named ; systemctl status named
Główny plik konfiguracyjny BIND9 to /etc/named.conf lub /etc/bind/named.conf (ref). Pozwala on na skonfigurowanie:
options:directory – katalog względem którego będą liczone wszystkie względne ścieżkiallow-query – ogranicza kto może wysyłać zapytaniarecursion (domyślnie wyłączone) – pozwala działać jako caching nameserverforwarders – lista serwerów, do których mają być przesyłane nieobsłużone zapytania (zmienia serwer w pośrednika)allow-recursion – ogranicza kto może wysyłać zapytania rekursywnezone 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.
Serwery slave ściągają kompletny plik strefy od serwerów master wykonując tzw. zone transfer [1], czyli zapytanie AXFR.
Wymiana danych między serwerem master a serwerem slave (zone transfer) wykorzystuje TCP
Zadanie 12a. Wykonaj zone transfer dla domeny zonetransfer.me i porównaj wyniki z zapytaniem o wszystkie rekordy:
host -al zonetransfer.me nsztm1.digi.ninja dig @nsztm1.digi.ninja zonetransfer.me axfrhost -a zonetransfer.me nsztm1.digi.ninja dig @nsztm1.digi.ninja zonetransfer.me anyZadanie 12b. Wykonaj zone transfer dla skonfigurowanej przez ciebie wcześniej domeny