====== Domain Name System - odpytywanie serwerów ====== **[[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 {{:sk2:dns_lab_setup.sh|}} i wykonaj go z uprawnieniami roota, podając jako argument adres IP podany przez prowadzącego. ===== FQDN ===== Nazwa domenowa [[https://en.wikipedia.org/wiki/Domain_name|[2]]] \\ Budowa nazwy domenowej: [[https://pl.wikipedia.org/wiki/Domena_internetowa#/media/File:Dns-schemat.svg|struktura drzewiasta]], [[https://en.wikipedia.org/wiki/DNS_root_zone|korzeń]]. \\ Top Level Domain [[https://en.wikipedia.org/wiki/Top-level_domain|[3]]], [[http://www.iana.org/domains/root/db|lista]] (do 2012r istniały tylko [[https://pl.wikipedia.org/wiki/Domena_funkcjonalna|funkcjonalne]] i [[https://pl.wikipedia.org/wiki/Krajowa_domena_najwy%C5%BCszego_poziomu|krajowe]] domeny; teraz mogą też funkcjonować [[https://en.wikipedia.org/wiki/Generic_top-level_domain|prawie dowolne]]) \\ Fully qualified domain name – pełna nazwa domenowa [[https://en.wikipedia.org/wiki/Fully_qualified_domain_name|[1]]] ~~Zadanie.#~~ 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 [[https://en.wikipedia.org/wiki/Root_name_server|[1]]] – odpowiadają za TLD; odpowiadają tylko na pytania o TLD * authoritative servers [[https://en.wikipedia.org/wiki/Name_server#Authoritative_name_server|[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 [[https://en.wikipedia.org/wiki/Name_server#Caching_name_server|[3]]] – serwery zbierające informacje z powyższych, przeznaczone dla użytkowników końcowych (zwane czasem //public DNS//) ===== Drzewo DNS a serwery DNS ===== {{:sk2:dns.svg|}} ===== Zapytania DNS ===== Klienci odpytujący DNS korzystają zwykle z UDP. Do odpytywania serwerów DNS można używać np. komend: * ''host'' (uwaga, różne wersje: [[http://www.isc.org/software/bind|[1]]] [[http://www.weird.com/~woods/projects/host.html|[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.#~~ 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 +noall +answer lab-net-1.cs.put.poznan.pl dig 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.#~~ Odpytaj kilka domen o wszystkie rekordy. Jakie typy rekordów głównie widzisz? Czy są to wszystkie rekordy dla tej domeny? 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 ( ++ np. | \\ ''host -t mx ngo.pl'' / ''dig ngo.pl mx'' ++ ) | | 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 – [[https://en.wikipedia.org/wiki/Sender_Policy_Framework|SPF]], [[https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail|DKIM]] i [[https://dmarc.org/overview/|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'' ++ ) | | SRV | Host i port usługi, ( ++ np. | \\ dla klientów [[https://matrix.org/|matrixa]]: ''dig _matrix._tcp.matrix.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.#~~ 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.#~~ Zadaj zapytania odwrotne o adres IPv6. Jaka domena jest użyta?$ 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: 214Przykł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: 62Wybó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.30Wysył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.15Serwery 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++++