Narzędzia użytkownika

Narzędzia witryny


Pasek boczny

sk2:dns

To jest stara wersja strony!


Domain Name System

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.

FQDN

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

Role serwerów DNS

Serwery nazw można podzielić ze względu na pełnione zadanie na:

  • root servers [1] – odpowiadają za TLD; odpowiadają tylko na pytania o TLD
  • authoritative servers [2] – wpisywane do serwerów nazw nadrzędnej domeny serwery odpowiedzialne za rozgłoszenie domeny w sieci; odpowiadają na pytania o swoją domenę
  • caching name servers [3] – serwery zbierające informacje z powyższych, przeznaczone dla użytkowników końcowych (zwane czasem public DNS)

Drzewo DNS a serwery DNS

Zapytania DNS

Klienci odpytujący DNS korzystają z UDP1)

Do odpytywania serwerów DNS można używać np. komend:

  • host (uwaga, różne wersje: [1] [2] )
  • dig -h
  • nslookup (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

Rodzaje rekordów

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 AAAA

Pytanie o "wszystkie" rekordy:

  • host -a [-v] nazwa_domenowa
  • dig nazwa_domenowa any

Zadanie 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. )
TXT Dowolny tekst (dosłownie dowolny).
Używany np. na potrzeby mechanizmów walki ze spamem – SPF i DKIM) ( przykłady: )
SRV Host i port usługi, ( np. )
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?

„Żeby dowiedzieć się jaki IP ma 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…“
Błędne koło?

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?

Kogo pytamy?

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.one
  • dig @server name, np:
    dig @dns.tpsa.pl pl.wikipedia.org
    dig @one.one.one.one pl.wikipedia.org

Rodzaje zapytań [1]:

  • iteracyjne
    • automatycznie:
      dig nazwa +trace
    • ręcznie krok po kroku, np. dla cs.put.poznan.pl:
      dig @a.root-servers.net cs.put.poznan.pl
      dig @a-dns.pl cs.put.poznan.pl
      ………
  • rekurencyjne (domyślne)
    dig nazwa +recurse

Przykładowe adresy publicznych serwerów DNS:

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ść:

  • Problem: zapytania DNS są wysyłane otwartym tekstem
  • Brak powszechnych rozwiązań
  • Zaproponowano: DNS over {TLS,HTTPS,QUIC,SSH}, dnscrypt, …

Zadanie 7b. Porównaj wynik zapytania o adres dowolnej strony z listy: https://hazard.mf.gov.pl/ pytając różne serwery DNS.

Konfiguracja 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ładowe pliki

Przykładowa konfiguracja authoritative serwera bind: bind9_example_config.tar.xz

Toy example konfiguracji caching serwera bind:

Uruchamianie

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:

Główny plik konfiguracyjny

Główny plik konfiguracyjny BIND9 to /etc/named.conf lub /etc/bind/named.conf (ref). Pozwala on na skonfigurowanie:

  • W sekcji options:
    • directory – katalog względem którego będą liczone wszystkie względne ścieżki
    • allow-query – ogranicza kto może wysyłać zapytania
    • recursion (domyślnie wyłączone) – pozwala działać jako caching nameserver
    • forwarders – 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 rekursywne
  • Sekcje zone definiują strefy.
    • Składnia dla serwera master to:
      zone "pelna.nazwa.domenowa.pl" IN {
          type master;
          file "sciezka_do/pliku_strefy.zone";
      };

      IN oznacza INternet (alternatywą jest np. CHaos)

    • Składnia dla serwera slave

Odwzorowanie odwrotne

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.

Pliki strefy

Zadanie 9. Jakie pliki stref są dostarczane z serwerem bind9 (i umieszczone w OpenSUSE w katalogu /var/lib/named)?

Składnia plików stref:

  • plik strefy musi zaczynać się od rekordu SOA, który zawiera:
    • serial – monotonicznie rosnący numer kolejnej wersji pliku strefy, używany przez slave'y do sprawdzania czy wiedzą co powinny
    • timeouty (patrz przykład pliku)
    • mail (w przykładzie: root → root.example.com → root@example.com)
  • plik strefy musi zawierać przynajmniej jeden rekord NS dla domeny
  • komentarze zaczynają się od ;
  • znak @ oznacza nazwę strefy (z pliku named.conf, nie z nazwy pliku strefy)
  • pustka (brak tekstu) oznacza powtórzenie z linii wyżej
  • brak . (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.
example.com.zone
$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).

Odwzorowanie odwrotne

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.

Zone transfer

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:

  • zone transfer:
    host -al zonetransfer.me nsztm1.digi.ninja
    dig @nsztm1.digi.ninja zonetransfer.me axfr
  • pytanie o wszystkie rekordy:
    host -a zonetransfer.me nsztm1.digi.ninja
    dig @nsztm1.digi.ninja zonetransfer.me any

Zadanie 12b. Wykonaj zone transfer dla skonfigurowanej przez ciebie wcześniej domeny

Worek linków

1) z pewnymi wyjątkami podsumowanymi w RFC7766
sk2/dns.1611661821.txt.gz · ostatnio zmienione: 2021/01/26 12:50 przez jkonczak