Dydaktyka:
FeedbackTo jest stara wersja strony!
Nazwa domenowa składa się z
etykiet oddzielanych kropkami – np. www.cs.put.poznan.pl.
Nazwy domenowe są zorganizowane hierarchicznie
(w drzewo),
stąd należy je "czytać" od końca.
Skrajnie prawa etykieta nazywana jest
domeną najwyższego poziomu
(TLD, Top Level Domain).
Domeny są podzielone na krajowe (ccTLD, np. .pl, .va, stworzone od
dwuliterowego kodu kraju) oraz generyczne (gTLD, np. .cern, .family)
i sponsorowane (sTLD, np. .edu, .gov).
Lista TLD jest jawna.
Nad domenami TLD znajduje się korzeń
DNS (pusta etykieta).
O warunkach rejestracji poddomen w danej domenie decyduje jej właściciel.
Nazwy domenowe mogą być pełne kwalifikowane (FQDN, fully qualified domain name) lub względne (podobnie jak np. ścieżki do plików).
Zadanie 1 Porównaj wynik poniższych poleceń:
$ ping -c4 lab-net-55 $ ping -c4 lab-net-55.cs.put.poznan.pl
Znając adresy IP serwerów odpowiedzialnych za korzeń można kolejno odpytywać
serwery o ich poddomeny i w ten sposób znaleźć serwer odpowiedzialny za
poszukiwaną nazwę domenową.
Serwery nazw można podzielić ze względu na pełnione zadanie na:
Klienci odpytujący DNS korzystają zwykle z UDP.
Do odpytywania serwerów DNS można używać np. komend:
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
dig +short lab-net-1.cs.put.poznan.pl dig +noall +answer lab-net-1.cs.put.poznan.pl dig lab-net-1.cs.put.poznan.pl
dig www.cs.put.edu.pl dig wp.pl host student.put.poznan.pl
Ważniejsze typy rekordów:
NS | Wskazuje serwer nazw dla domeny |
SOA | Start of Authority, istotny dla konfiguracji serwerów nazw |
CNAME | Alias na inną nazwę domenową ( np. host -t cname www.cs.put.edu.pl dig unixlab.cs.put.poznan.pl cname ) |
A | Adres IPv4 |
AAAA | Adres IPv6 |
MX | Serwer odbierający pocztę dla domeny ( np. host -t mx ngo.pl / dig ngo.pl mx ) |
TXT | Dowolny tekst (dosłownie dowolny). Używany np. na potrzeby mechanizmów walki ze spamem – SPF, DKIM i DMARC) ( przykłady: Cokolwiek: dig akamai.net txt Cokolwiek: host -t txt lenovo.com SPF: dig student.put.poznan.pl txt DKIM: host -t txt dkim1024._domainkey.allegro.pl DMARC: dig +noall +answer _dmarc.um.poznan.pl txt ) |
PTR | Nazwa domenowa odpowiadająca (odpowiednio zakodowanemu) adresowi IP |
Więcej o różnych rodzajach rekordów możesz przeczytać tutaj.
Pytanie o wskazany typ 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? Czy są to wszystkie rekordy dla tej domeny?
Zadanie 4 Wykonaj zapytania o odwzorowanie odwrotne (zapytanie typu PTR):
host 150.254.30.233 dig -x 150.254.30.233
Jak adres IP jest przetwarzany na nazwę domenową o którą jest wysyłane zapytanie?
Zadanie 5 Zadaj zapytania odwrotne o adres IPv6. Jaka domena jest użyta?
System operacyjny Linux używa serwera DNS skonfigurowanego w pliku
/etc/resolv.conf
.
Dokumentacja możliwych wpisów w tym pliku jest w podręczniku
systemowym (man resolv.conf
).
W narzędziach dig
i host
można ręczne wybrać serwer do którego kierowane są zapytania:
host name server
, np: host pl.wikipedia.org dns.tpsa.pl
host pl.wikipedia.org one.one.one.one
dig @server name
, np: dig @netia-dns1.inetia.pl pl.wikipedia.org
dig @dns9.quad9.net pl.wikipedia.org
Przykładowe adresy publicznych serwerów DNS:
9.9.9.9
IBM (Quad9)
Serwery authoritative i caching – przypomnienie.
Zadanie 6
Porównaj rekordy zwrócone przez następujące wywołania programu dig
:
dig +noall +answer @cns1a.atman.pl poznan.pl dig +noall +answer @ordns.he.net poznan.pl dig +noall +answer @bilbo.nask.org.pl poznan.pl
Czy ponowne wykonanie tych poleceń zwróci takie same rekordy? Co oznacza druga kolumna wyników?
Zadanie 7 Znajdź w wynikach dig
informację o tym, czy serwer ustawił flagę
aa
(authoritative answer) wskazującą że uznaje siebie za serwer authoritative
dla wskazanej domeny.
Zadanie 8
Porównaj wynik zapytania o adres dowolnej strony z listy:
https://hazard.mf.gov.pl/ pytając poniższe serwery DNS:
1.0.0.1
ordns.he.net
dns.tpsa.pl
netia-dns1.inetia.pl
oraz serwer ustawiony jako domyślny w systemie operacyjnym.
DNS wysyła zapytania otwartym tekstem co nie zapewnia prywatności, oraz używa protokołu UDP co upraszcza spoofing.
Przykłady odpowiedzi na zapytania
Przykładowy wynik komendy dig
– ogólny opis sekcji:
$ dig +norecurse bip.put.poznan.pl @sol.put.poznan.pl ; <<>> DiG 9.16.48 <<>> +norecurse bip.put.poznan.pl @sol.put.poznan.pl ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54420 ;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 4 ;; QUESTION SECTION: ;bip.put.poznan.pl. IN A ;; ANSWER SECTION: bip.put.poznan.pl. 86400 IN A 89.191.148.30 ;; AUTHORITY SECTION: put.poznan.pl. 86400 IN NS orion.put.poznan.pl. put.poznan.pl. 86400 IN NS sunflower.man.poznan.pl. put.poznan.pl. 86400 IN NS sol.put.poznan.pl. ;; ADDITIONAL SECTION: sol.put.poznan.pl. 86400 IN AAAA 2001:808:201::5:11 orion.put.poznan.pl. 86400 IN AAAA 2001:808:201::5:4 sol.put.poznan.pl. 86400 IN A 150.254.5.11 orion.put.poznan.pl. 86400 IN A 150.254.5.4 ;; Query time: 57 msec ;; SERVER: 2001:808:201::5:11#53(2001:808:201::5:11) ;; WHEN: Thu Jan 1 01:00:00 CET 1970 ;; MSG SIZE rcvd: 214
Przykładowy wynik komendy dig
– flagi i treść rekordu:
$ dig bip.put.poznan.pl @sol.put.poznan.pl ; <<>> DiG 9.16.48 <<>> bip.put.poznan.pl @sol.put.poznan.pl ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54144 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;bip.put.poznan.pl. IN A ;; ANSWER SECTION: bip.put.poznan.pl. 86400 IN A 89.191.148.30 ;; Query time: 48 msec ;; SERVER: 2001:808:201::5:11#53(2001:808:201::5:11) ;; WHEN: Thu Jan 1 01:00:00 CET 1970 ;; MSG SIZE rcvd: 62
Wybór wybranych sekcji z wyników dig
$ dig +norecurse +noall +question bip.put.poznan.pl @sol.put.poznan.pl ;bip.put.poznan.pl. IN A $ dig +norecurse +noall +answer bip.put.poznan.pl @sol.put.poznan.pl bip.put.poznan.pl. 86400 IN A 89.191.148.30 $ dig +norecurse +noall +authority bip.put.poznan.pl @sol.put.poznan.pl put.poznan.pl. 86400 IN NS orion.put.poznan.pl. put.poznan.pl. 86400 IN NS sunflower.man.poznan.pl. put.poznan.pl. 86400 IN NS sol.put.poznan.pl. $ dig +norecurse +noall +additional bip.put.poznan.pl @sol.put.poznan.pl sol.put.poznan.pl. 86400 IN AAAA 2001:808:201::5:11 orion.put.poznan.pl. 86400 IN AAAA 2001:808:201::5:4 sol.put.poznan.pl. 86400 IN A 150.254.5.11 orion.put.poznan.pl. 86400 IN A 150.254.5.4 $ dig +norecurse +noall +question +answer bip.put.poznan.pl @sol.put.poznan.pl ;bip.put.poznan.pl. IN A bip.put.poznan.pl. 86400 IN A 89.191.148.30
Wysyłanie kilku zapytań naraz
$ dig @sol.put.poznan.pl +norecurse +noall +question +answer www.put.poznan.pl A www.put.poznan.pl AAAA ;www.put.poznan.pl. IN A www.put.poznan.pl. 86400 IN CNAME maxine.put.poznan.pl. maxine.put.poznan.pl. 86400 IN A 150.254.5.114 ;www.put.poznan.pl. IN AAAA www.put.poznan.pl. 86400 IN CNAME maxine.put.poznan.pl. maxine.put.poznan.pl. 86400 IN AAAA 2001:808:201::5:114 $ dig @1.1.1.1 +noall +answer put.poznan.pl A put.poznan.pl MX put.poznan.pl TXT put.poznan.pl. 82927 IN A 150.254.5.114 put.poznan.pl. 78005 IN MX 0 sargas.put.poznan.pl. put.poznan.pl. 78005 IN MX 0 antares.put.poznan.pl. put.poznan.pl. 86398 IN TXT "v=spf1 ip4:150.254.5.18 ip4:150.254.5.16 ip4:150.254.5.15 ip4:150.254.5.14 ip4:150.254.5.28 -all" (…)
Rekordy używane przez pocztę internetową
$ dig +noall +answer sejm.gov.pl MX sejm.gov.pl. 3600 IN MX 10 mx1.sejm.gov.pl. sejm.gov.pl. 3600 IN MX 5 mx2.sejm.gov.pl. $ dig +noall +answer _dmarc.sejm.gov.pl txt _dmarc.sejm.gov.pl. 3600 IN TXT "v=DMARC1; p=reject; aspf=s; adkim=s; rua=mailto:dmarc@sejm.gov.pl; ruf=mailto:dmarc@sejm.gov.pl;fo=1" $ dig +noall +answer put.poznan.pl TXT put.poznan.pl. 86398 IN TXT "v=spf1 ip4:150.254.5.18 ip4:150.254.5.16 ip4:150.254.5.15 ip4:150.254.5.14 ip4:150.254.5.28 -all" $ cat mail.eml (…) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=smtpapi; bh=… (…) $ dig +short smtpapi._domainkey.github.com txt "k=rsa; t=s; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPtW5iwpXVPiH5FzJ7Nrl8USzuY9zqqzjE0D1r04xDN6qwziDnmgcFNNfMewVKN2D1O+2J9N14hRprzByFwfQW76yojh54Xu3uSbQ3JP0A7k8o8GutRF8zbFUA8n0ZH2y0cIEjMliXY4W4LwPA7m4q0ObmvSjhd63O9d8z1XkUBwIDAQAB"
Odwzorowania odwrotne ("IP" na nazwę domenową)
$ dig +noall +answer -x 150.254.5.15 15.5.254.150.in-addr.arpa. 86390 IN PTR mercury.put.poznan.pl. $ dig +noall +answer -x 2001:808:201::5:29 9.2.0.0.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.2.0.8.0.8.0.1.0.0.2.ip6.arpa. 86249 IN PTR kerio.put.poznan.pl.
TTL – czas przez jaki rekord jest jeszcze ważny (i może być trzymany w cache'u)
$ for S in 1.0.0.1 ordns.he.net bilbo.nask.org.pl; do dig +noall +answer @$S nask.pl A; done nask.pl. 22 IN A 45.60.74.15 nask.pl. 579 IN A 45.60.74.15 nask.pl. 600 IN A 45.60.74.15
Serwery cache mogą być skonfigurowane tak, by nie odpowiadać na wybrane nazwy domenowe bądź zmieniać treść odpowiedzi na wybrane nazwy domenowe; np. dla walki z niepłaceniem podatków od gier hazardowych czy blokowania reklam:
$ dig +noall +answer @dns.google casino.com casino.com. 120 IN A 159.203.128.199 $ dig +noall +answer @dns.tpsa.pl casino.com casino.com. 0 IN A 145.237.235.240 $ dig +noall +answer @dns.google tpc.googlesyndication.com tpc.googlesyndication.com. 30 IN A 216.58.215.65 $ dig +noall +answer @dns.adguard-dns.com tpc.googlesyndication.com tpc.googlesyndication.com. 3600 IN A 0.0.0.0 $ dig +noall +comments @adblock.dns.mullvad.net tpc.googlesyndication.com ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 49888 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1