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
»
sk2
»
dns-queries
sk2:dns-queries
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 ====== **[[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]] <small> (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]]) </small><html><!--https://newgtlds.icann.org/en--></html> \\ 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ń: <html><div style="margin-top:-1.2em"></div></html> $ 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'' (<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 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: <html><div style="margin-top:-1.2em"></div></html> | 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 -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 (patrz niżej) | Pozostałe: https://en.wikipedia.org/wiki/List_of_DNS_record_types ~~Zadanie.#~~ Wykonaj zapytania o odwzorowanie odwrotne: <html><div style="margin-top:-1.2em"></div></html> 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 <small> ~~Zadanie.#~~ Zadaj zapytania odwrotne o adres IPv6. Jaka domena jest użyta? </small> <html> <div style="display: block; margin-left: 0.5em; padding-left: 0.5em; border-left: gray 1px solid"> </html> // „Ż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''…“ // <html> </div> Błędne koło? </html> 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. [[https://en.wikipedia.org/wiki/Domain_Name_System#Circular_dependencies_and_glue_records|glue record]] ~~Zadanie.#~~ 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ń [[http://www.cs.put.poznan.pl/ddwornikowski/sieci/sieci2/dns.html#rodzaje-zapytan|[1]]]: * iteracyjne * automatycznie: \\ ''dig //nazwa// +trace'' * <html><small></html>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'' \\ ''………'' <html></small></html> * rekurencyjne (domyślne) \\ ''dig //nazwa// +recurse'' <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> ~~Zadanie.#~~ Wykonaj ręcznie i automatycznie zapytanie iteracyjne dla przykładowej nazwy domenowej Serwery authoritative i caching – przypomnienie ~~Zadanie.#~~ Porównaj odpytanie o stronę **//poznan.pl//** programem ''dig'' następujących serwerów DNS: \\ ''cns1a.atman.pl'' ''ordns.he.net'' ''bilbo.nask.org.pl'' \\ Co oznacza druga kolumna wyników? Czym różnią się flagi odpowiedzi? <small> ~~Zadanie.#~~ Znajdź w wynikach ''dig'' informację o tym, czy serwer ustawił flagę ''authoritative answer'' wskazującą że uznaje siebie za serwer authoritative dla wskazanej domeny. </small> <small> Bezpieczeństwo: <html><div style="margin-top:-1.2em"></div></html> * Problem: [[https://en.wikipedia.org/wiki/DNS_spoofing|DNS spoofing]] * Powszechnie przyjęte rozwiązanie: [[https://en.wikipedia.org/wiki/Domain_Name_System_Security_Extensions|DNSSEC]] Prywatność: * Problem: zapytania DNS są wysyłane otwartym tekstem * Brak powszechnych rozwiązań * Zaproponowano: DNS over {TLS,HTTPS,QUIC,SSH}, dnscrypt, … </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'' ==== UDP vs TCP ==== Programy korzystające z systemu DNS zgodnie ze [[https://datatracker.ietf.org/doc/html/rfc1035#section-4.2|standardami]] ograniczają długość wiadomości UDP do 512B. Jeśli wiadomość nie zmieści się w tym limicie, używa się TCP. Użycie TCP w systemie DNS podsumowuje [[https://tools.ietf.org/html/rfc7766|RFC7766]]. ~~Zadanie.#~~ Zapytaj o rekord TXT dla nazwy domenowej ''lenovo.com'' i zobacz w Wiresharku jak wygląda wymiana pakietów. Porównaj ją z wymianą o rekord A dla tego adresu.
sk2/dns-queries.1733838680.txt.gz
· ostatnio zmienione: 2024/12/10 14:51 przez
jkonczak
Narzędzia strony
Pokaż stronę
Poprzednie wersje
Odnośniki
Złóż / rozłóż wszystko
Do góry