przejście do zawartości
Jan Kończak
Narzędzia użytkownika
Zaloguj
Narzędzia witryny
Narzędzia
Pokaż stronę
Poprzednie wersje
Odnośniki
Ostatnie zmiany
Menadżer multimediów
Indeks
Zaloguj
Ostatnie zmiany
Menadżer multimediów
Indeks
Jesteś tutaj:
start
»
bio-sk
»
dns
bio-sk:dns
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== Domain Name System - odpytywanie serwerów ====== ===== FQDN ===== [[https://en.wikipedia.org/wiki/Domain_name|Nazwa domenowa]] składa się z etykiet oddzielanych kropkami – np. //%%www.cs.put.poznan.pl%%//. \\ Nazwy domenowe są zorganizowane hierarchicznie ([[https://pl.wikipedia.org/wiki/Domena_internetowa#/media/File:Dns-schemat.svg|w drzewo]]), stąd należy je "czytać" od końca. Skrajnie prawa etykieta nazywana jest [[https://en.wikipedia.org/wiki/Top-level_domain|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//). [[http://www.iana.org/domains/root/db|Lista TLD]] jest jawna. Nad domenami TLD znajduje się [[https://en.wikipedia.org/wiki/DNS_root_zone|korzeń]] DNS (pusta etykieta). \\ O warunkach rejestracji poddomen w danej domenie decyduje jej właściciel. Nazwy domenowe mogą być [[https://en.wikipedia.org/wiki/Fully_qualified_domain_name|pełne kwalifikowane]] (FQDN, fully qualified domain name) lub względne (<small>podobnie jak np. ścieżki do plików</small>). ~~Zadanie.#~~ Porównaj wynik poniższych poleceń: <html><div style="margin-top:-1.2em"></div></html> $ ping -c1 lab-net-1 $ ping -c1 lab-net-1.cs.put.poznan.pl ===== Drzewo DNS a serwery DNS ===== {{:sk2:dns.svg|}} 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ą. ===== Role serwerów DNS ===== Serwery nazw można podzielić ze względu na pełnione zadanie na: * [[https://en.wikipedia.org/wiki/Root_name_server|root servers]] – odpowiadają za TLD; odpowiadają tylko na pytania o TLD, * [[https://en.wikipedia.org/wiki/Name_server#Authoritative_name_server|authoritative servers]] – wpisywane do serwerów nazw nadrzędnej domeny serwery odpowiedzialne za rozgłoszenie domeny w sieci; odpowiadają na pytania o swoją domenę, * [[https://en.wikipedia.org/wiki/Name_server#Caching_name_server|caching name servers]] – serwery zbierające informacje z powyższych, przeznaczone dla użytkowników końcowych (zwane czasem //public DNS//). ===== Zapytania DNS ===== Klienci odpytujący DNS korzystają zwykle z UDP. Do odpytywania serwerów DNS można używać np. komend: * ''host'' (<html><small></html>uwaga, różne wersje: [[http://www.isc.org/software/bind|[1]]] [[http://www.weird.com/~woods/projects/host.html|[2]]] <html></small></html>) * ''dig -h'' * <html><small></html>''nslookup'' (zacznij od przeczytania ''man nslookup'')<html></small></html> * <html><small></html>''dnstracer'' (pozwala przejść całe drzewo DFSem, np: ''dnstracer -c -o -s . assets.publishing.service.gov.uk.'' )<html></small></html> ~~Zadanie.#~~ Przetestuj poniższe zapytania: <html><div style="margin-top:-1.2em"></div></html> host lab-net-1.cs.put.poznan.pl <html><div style="margin-top:-1.2em"></div></html> 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 <html><div style="margin-top:-1.2em"></div></html> dig www.cs.put.edu.pl dig wp.pl host student.put.poznan.pl ==== Rodzaje rekordów ==== Ważniejsze typy rekordów: <html><div style="margin-top:-1.2em"></div></html> | 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 – [[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 -t SRV _matrix._tcp.matrix.org'' <html><!--\\ dla klientów xmpp: ''dig _xmpp-client._tcp.jabber.org srv''--></html> \\ 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 odpowiadająca (odpowiednio zakodowanemu) adresowi IP | <html><div style="margin-top:-1.2em"></div></html> <small> Więcej o różnych rodzajach rekordów możesz przeczytać [[https://www.cloudflare.com/learning/dns/dns-records/|tutaj]]. </small> 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.#~~ Odpytaj kilka domen o wszystkie rekordy. Jakie typy rekordów głównie widzisz? Czy są to wszystkie rekordy dla tej domeny? ~~Zadanie.#~~ Wykonaj zapytania o odwzorowanie odwrotne (zapytanie typu PTR): <html><div style="margin-top:-1.2em"></div></html> host 150.254.30.233 dig -x 150.254.30.233 <html><div style="margin-top:-1.2em"></div></html> Jak adres IP jest przetwarzany na nazwę domenową o którą jest wysyłane zapytanie? <small> ~~Zadanie.#~~ Zadaj zapytania odwrotne o adres IPv6. Jaka domena jest użyta? </small> ==== Kogo pytamy? ==== System operacyjny Linux używa serwera DNS skonfigurowanego w pliku ''/etc/resolv.conf''. <small>Dokumentacja możliwych wpisów w tym pliku jest w podręczniku systemowym (''man resolv.conf'').</small> 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'' <small> Przykładowe adresy publicznych serwerów DNS: <html><div style="margin-top:-1.2em"></div></html> * ''8.8.8.8'' oraz ''8.8.4.4'' [[https://en.wikipedia.org/wiki/Google_Public_DNS|Google Public DNS]] * ''1.1.1.1'' oraz ''1.0.0.1'' [[https://en.wikipedia.org/wiki/1.1.1.1|Cloudflare DNS]] * ''9.9.9.9'' [[https://en.wikipedia.org/wiki/Quad9|IBM (Quad9)]] * dłuższa lista: [[https://en.wikipedia.org/wiki/Public_recursive_name_server]] </small> Serwery authoritative i caching – przypomnienie. ~~Zadanie.#~~ Porównaj rekordy zwrócone przez następujące wywołania programu ''dig'': <html><div style="margin-top:-1.2em"></div></html> 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 <html><div style="margin-top:-1.2em"></div></html> Czy ponowne wykonanie tych poleceń zwróci takie same rekordy? Co oznacza druga kolumna wyników? <small> ~~Zadanie.#~~ 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. </small> ~~Zadanie.#~~ 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. <small> DNS wysyła zapytania otwartym tekstem co nie zapewnia prywatności, oraz używa protokołu UDP co upraszcza [[https://en.wikipedia.org/wiki/DNS_spoofing|spoofing]]. </small> ==== Przykłady odpowiedzi na zapytania ==== ++++ Przykłady odpowiedzi na zapytania | Przykładowy wynik komendy ''dig'' – ogólny opis sekcji: <html><pre style="line-height:1em; margin-top:-1.2em"> $ <b>dig <span style="opacity:0.25">+norecurse</span> bip.put.poznan.pl @sol.put.poznan.pl</b> ; <<>> DiG 9.16.48 <<>> <span style="opacity:0.25">+norecurse</span> bip.put.poznan.pl @sol.put.poznan.pl ;; global options: +cmd ;; Got answer:<span style="background-color: #f002" title="Nagłówki odpowiedzi"> ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54420 ;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 4 </span><span style="background-color: #0f03" title="Zapytanie – odpowiedź zawsze zawiera informację o treści zapytania"> ;; QUESTION SECTION: ;bip.put.poznan.pl. IN A </span><span style="background-color: #00f2" title="Odpowiedzi na zapytanie"> ;; ANSWER SECTION: bip.put.poznan.pl. 86400 IN A 89.191.148.30 </span><span style="background-color: #ff04" title='Sekcja "authority" informuje które serwery nazw są autorytatywne dla zapytania (czyt. który serwer jest odpowiedzialny w drzewie DNS za nazwę domenową o którą zapytano).'> ;; 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. </span><span style="background-color: #f0f3" title='Sekcja "additional" to rekordy związane z zapytaniem, ale nie będące bezpośrednią odpowiedzią na zapytanie (np. glue records).'> ;; 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 </span> ;; Query time: 57 msec ;; SERVER: <span style="background-color: #0002" title="Informacja jaki serwer został zapytany">2001:808:201::5:11#53(2001:808:201::5:11)</span> ;; WHEN: Thu Jan 1 01:00:00 CET 1970 ;; MSG SIZE rcvd: 214 </pre></html> Przykładowy wynik komendy ''dig'' – flagi i treść rekordu: <html><pre style="line-height:1em; margin-top:-1.2em"> $ <b>dig bip.put.poznan.pl @sol.put.poznan.pl</b> ; <<>> 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: <span style="background-color: #f002" title="Flagi oznaczają odpowiednio: 'qr' jest to odpowiedź 'aa' odpowiedź jest od serwera authoritative dla tego zapytania 'tc' odpowiedź przekroczyła limit 512B i została ucięta 'rd' zapytanie żądało wykonania rekurencyjnego 'ra' serwer pozwala na zapytania rekurencyjne">qr aa rd</span>; 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: <span style="background-color: #0ff4" title="Nazwa domenowa której dotyczy ten rekord zasobowy">bip.put.poznan.pl.</span> 86400 IN <span style="background-color: #00f2" title="Rodzaj rekordu zasobowego"> A </span> <span style="background-color: #0f02" title="Treść (wartość) rekordu zasobowego">89.191.148.30</span> ;; 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 </pre></html> Wybór wybranych sekcji z wyników ''dig'' <html><pre style="line-height:1em; margin-top:-1.2em"> $ <b>dig +norecurse +noall +question bip.put.poznan.pl @sol.put.poznan.pl </b> ;bip.put.poznan.pl. IN A $ <b>dig +norecurse +noall +answer bip.put.poznan.pl @sol.put.poznan.pl</b> bip.put.poznan.pl. 86400 IN A 89.191.148.30 $ <b>dig +norecurse +noall +authority bip.put.poznan.pl @sol.put.poznan.pl</b> 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. $ <b>dig +norecurse +noall +additional bip.put.poznan.pl @sol.put.poznan.pl</b> 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 $ <b>dig +norecurse +noall +question +answer bip.put.poznan.pl @sol.put.poznan.pl</b> ;bip.put.poznan.pl. IN A bip.put.poznan.pl. 86400 IN A 89.191.148.30 </pre></html> Wysyłanie kilku zapytań naraz <html><pre style="line-height:1em; margin-top:-1.2em"> $ <b>dig @sol.put.poznan.pl +norecurse +noall +question +answer www.put.poznan.pl A www.put.poznan.pl AAAA</b> ;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 $ <b>dig @1.1.1.1 +noall +answer put.poznan.pl A put.poznan.pl MX put.poznan.pl TXT</b> 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" (…) </pre></html> Rekordy używane przez pocztę internetową <html><pre style="line-height:1em; margin-top:-1.2em"> $ <b>dig +noall +answer sejm.gov.pl MX</b> sejm.gov.pl. 3600 IN <span style="background-color: #00f2" title="MX wskazuje jaki serwer odbiera maile kierowane do podanej domeny (czyli w tym przypadku: do którego serwera dostarczyć mail wysłany do adresata …@sejm.gov.pl)">MX</span> 10 <span style="background-color: #f0f2" title="nazwa domenowa serwera odbierającego pocztę dla wskazanej domeny">mx1.sejm.gov.pl.</span> sejm.gov.pl. 3600 IN <span style="background-color: #00f2" title="MX wskazuje jaki serwer odbiera maile kierowane do podanej domeny (czyli w tym przypadku: do którego serwera dostarczyć mail wysłany do adresata …@sejm.gov.pl)">MX</span> <span style="background-color: #f0f2" title="Priorytet serwera poczty – serwer o NIŻSZEJ wartości ma być użyty w pierwszej kolejności"> 5 </span>mx2.sejm.gov.pl. $ <b>dig +noall +answer _dmarc.sejm.gov.pl txt</b> <span style="background-color: #00f2" title="Rekord _dmarc.⟨domena⟩, jeśli obecny, wskazuje że maile wysyłane z tej domeny używają SPF i DKIM">_dmarc</span>.sejm.gov.pl. 3600 IN TXT "v=DMARC1; <span style="background-color: #ff04" title="co zrobić z mailami które mają z nieprawidłowym podpis bądź nie mają go wcale, lub zostały wysłane z adresów innych niż wskazane w SPF">p=reject</span>; <span style="background-color: #0002" title="ustawienia SPF">aspf</span>=s; <span style="background-color: #0002" title="ustawienia DKIM">adkim</span>=s; <span style="background-color: #0001" title="czy i do kogo wysłać raporty statystyczne i o odrzuconych mailach">rua=mailto:dmarc@sejm.gov.pl; ruf=mailto:dmarc@sejm.gov.pl;</span>fo=1" $ <b>dig +noall +answer put.poznan.pl TXT</b> put.poznan.pl. 86398 IN TXT "<span style="background-color: #00f2" title="Jeśli dla domeny jest obecny rekord TXT zaczynający się od 'v=spf1', to wskazuje on z jakich IP wolno wysyłać maile z tej domeny (tzn. z nadawcą …@⟨domena⟩)">v=spf1</span> 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 <span style="background-color: #0002" title="-all nakazuje odrzucać maile z innych IP ~all wskazuje że maile z innych IP są podejrzane">-all</span>" $ <b>cat mail.eml</b> (…) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; <span style="background-color: #0002" title="Jeżeli w treści maila jest podpis, to razem z nim podana jest domena i nazwa klucza">d=github.com;</span> <span style="background-color: #0002" title="Jeżeli w treści maila jest podpis, to razem z nim podana jest domena i nazwa klucza">s=smtpapi;</span> bh=… (…) $ <b>dig +short <span style="background-color: #0002" title="Nazwa klucza publicznego do weryfikacji podpisu DKIM">smtpapi</span>._domainkey.<span style="background-color: #0002" title="Nazwa domeny z której należy wziąć klucz">github.com</span> txt</b> "k=rsa; t=s; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPtW5iwpXVPiH5FzJ7Nrl8USzuY9zqqzjE0D1r04xDN6qwziDnmgcFNNfMewVKN2D1O+2J9N14hRprzByFwfQW76yojh54Xu3uSbQ3JP0A7k8o8GutRF8zbFUA8n0ZH2y0cIEjMliXY4W4LwPA7m4q0ObmvSjhd63O9d8z1XkUBwIDAQAB" </pre></html> Odwzorowania odwrotne ("IP" na nazwę domenową) <html><pre style="line-height:1em; margin-top:-1.2em"> $ <b>dig +noall +answer -x 150.254.5.15</b> 15.5.254.150.in-addr.arpa. 86390 IN PTR mercury.put.poznan.pl. $ <b>dig +noall +answer -x 2001:808:201::5:29</b> 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. </pre></html> TTL – czas przez jaki rekord jest jeszcze ważny (i może być trzymany w cache'u) <html><pre style="line-height:1em; margin-top:-1.2em"> $ <b>for S in 1.0.0.1 ordns.he.net bilbo.nask.org.pl; do dig +noall +answer @$S nask.pl A; done</b> nask.pl. <span style="background-color: #0002" title="Wartość TTL (w sekundach)">22</span> IN A 45.60.74.15 nask.pl. <span style="background-color: #0002" title="Wartość TTL (w sekundach)">579</span> IN A 45.60.74.15 nask.pl. <span style="background-color: #0002" title="Wartość TTL (w sekundach)">600</span> IN A 45.60.74.15 </pre></html> 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: <html><pre style="line-height:1em; margin-top:-1.2em"> $ <b>dig +noall +answer @dns.google casino.com</b> casino.com. 120 IN A 159.203.128.199 $ <b>dig +noall +answer @dns.tpsa.pl casino.com</b> casino.com. 0 IN A 145.237.235.240 $ <b>dig +noall +answer @dns.google tpc.googlesyndication.com</b> tpc.googlesyndication.com. 30 IN A 216.58.215.65 $ <b>dig +noall +answer @dns.adguard-dns.com tpc.googlesyndication.com</b> tpc.googlesyndication.com. 3600 IN A 0.0.0.0 $ <b>dig +noall +comments @adblock.dns.mullvad.net tpc.googlesyndication.com</b> ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 49888 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 </pre></html> ++++
bio-sk/dns.1734567183.txt.gz
· ostatnio zmienione: 2024/12/19 01:13 przez
jkonczak
Narzędzia strony
Pokaż stronę
Poprzednie wersje
Odnośniki
Złóż / rozłóż wszystko
Do góry