Podstawy DNS – z czym to się je

Ponieważ sieć Internet bazuje przede wszystkim na adresach IP, poruszanie sie po kolejnych stronach za ich pomocą byłoby niepraktyczne. Z pomocą przychodzi nam protokół DNS, którego głównym zadaniem jest zamiana adresu zrozumiałego dla użytkownika na taki, który zrozumie komputer. Mechanizm DNS zawiera w sobie ogromną bazę danych, ale o tym później.

Jak działa DNS?

Aby całość działała poprawnie i nie dochodziło do nadużyć, administrację nad DNS wykonuje IANA (Internet Assigned Numbers Authority) oraz ICANN (The Internet Corporation for Assigned Names and Numbers). Zapewniają oni przyznawanie domen internetowych między kraje i organizacje oraz ustalanie ich struktury.

W taki sposób domeny typu .pl możliwe są do zarejestrowania w NASK (Naukowa Akademicka Sieć Komputerowa) bądź u jednego z ich pośredników.

Przejdźmy do tego, w jaki sposób po wejściu na dany adres www, nasz komputer wie, na jakie IP przesyłać żądanie. Poniższe kroki są uogólnione i stanowią jedynie ogólny schemat bardziej rozszerzonego działania.

  1. Po wpisaniu adresu www, w przeglądarce następuje przesłanie zapytania do providera np. dostawcy internetu lub ogólnodostępnego DNS-a jak 8.8.8.8 od Google.
  2. Ponieważ provider nie zna adresu IP serwera, przesyłane jest zapytanie na jeden z 13 głównych serwerów DNS.
  3. Jeden z 13 głównych serwerów DNS w odpowiedzi przesyła providerowi lokalizację IP serwera wyższego poziomu (Top Level Domain), który przetrzymuje informacje o domenach z daną końcówką (jak wspomnieliśmy wcześniej, za .pl odpowiada NASK)
  4. Provider przesyła zapytanie na serwer wyższego poziomu zwróconym przez jeden z 13 głównych serwerów.
  5. Jeśli serwer przetrzymuje IP interesującej nas strony, dostajemy je.
  6. Przeglądarka dostaje informacje od providera o serwerze, na którym jest strona www, z którym przebiega dalsza komunikacja.

Rodzaje zapytań

W związku z powyższym, zapytania możemy podzielić na dwa rodzaje:

  • Rekurencyjne – wymusza na serwerze znalezienie i przesłanie informacji o domenie bądź powiadomienia o błędzie. Jeśli odpytywany serwer nie zna odpowiedzi, to zapytuje kolejne serwery DNS.
  • Iteracyjne – przesyłane miedzy serwerami DNS. Serwer zwraca najlepsze informacje, jakimi dysponuje o serwerze związanym z domeną (przykładowo, że o kolejne informacje należy zwrócić się z zapytaniem do serwera pod podanym adresem IP).

Typy rekordów DNS

Każda z domen posiada swoją strefę DNS, czyli bazę danych, przetrzymujacą rekordy definiujace jej konfigurację. Do najważniejszych, należą:

  • Rekord A (Rekord adresów IPv4) – mapuje adres IP hosta na jej 32-bitowy adres IPv4. Najczęstszy adres, który wykorzystuje przeglądarka w komunikacji z docelowym serwerem.
  • Rekord AAAA (Rekord adresów IPv6) – 128-bitowy adres IPv6. Docelowo miał takie same zadanie, jak rekord A.
  • Rekord CNAME – rekord ustanawiający alias, dzięki któremu jesteśmy w stanie skierować domenę lub subdomenę na inną nazwę domenową.
  • Rekord MX (wymiany poczty) – przekierowuje pocztę i wskazuje serwer odpowiedzialny za jej obsługę.
  • Rekord PTR (rekord wskaźnika) – mapuje adres IPv4 i IPv6 dla nazwy kanonicznej na zrozumiały dla nas (np. www.bugspace.pl).
  • Rekord NS (rekord serwera nazw) – rekord określający, które serwery przekazują informacje na temat domeny z systemu DNS.
  • Rekord SOA – zawiera autorytatywne informacje o domenie internetowej, min. główny serwer domeny, email administratora domeny i numer seryjny domeny.
  • Rekord SRV – pozwala na dołączenie dodatkowych informacji np. w postaci wskazania portu i rodzaj uprotokołu, na którym działa konkretna usługa lub serwer.
  • Rekord TXT – umożliwa dołączenie dodatkowego tekstu w strefie DNS. Używany np. do weryfikacji własności domeny lub implementacji specyfikacji Sender Policy Framework (SPF).

Narzędzia do odpytywania serwerów nazw DNS

Odpytywanie serwerów nazw DNS nie służy tylko do weryfikacji i rozwiązywania problemów z DNS, ale także w celu dostania publicznych informacji o serwerze. Najbardziej znane narzędzia to host, nslookup i dig. My skupimy się na tym ostatnim. Jeśli wiemy już po co je stosować, należy sobie zadać pytanie „jak”.

Podstawowe odpytanie serwera DNS, domyślnie zapytujące o rekord A z domeny dummy-domain.com, wygląda następująco:

dig dummy-domain.com

po podmianie dummy-domain.com na google.pl, dostajemy:

; <<>> DiG 9.16.1-Ubuntu <<>> google.pl
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33619
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;google.pl.			IN	A

;; ANSWER SECTION:
google.pl.		295	IN	A	216.58.209.3

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: śro kwi 14 21:47:16 CEST 2021
;; MSG SIZE  rcvd: 54

Początkowo, otrzymana odpowiedź może wydawać nam się skomplikowana i nieczytelna. Linie poprzedzone średnikiem należy traktować jako komentarz. Z odpowiedzi możemy (lecz nie musimy, jak zaraz się okaże) dostać kolejno pięć sekcji z informacjami:

  • Nagłówek (header) – nagłówek odpowiedzi serwera DNS,
  • Zapytanie (question) – zapytanie przesłane na serwer DNS,
  • Odpowiedź (answer) – odpowiedź serwera DNS na nasze zapytanie,
  • Autorytet (authority) – wskazuje serwery, które są ostatecznym autorytetem dla zapytań dotyczących wskazanej domeny. Serwer DNS na nasze zapytanie może użyć informacji przetrzymywanych w pamięci podręcznej (cache). Przykładowo, resolver Cloudflare zapisuje w pamięci podręcznej informacje na 24 godziny. Aby mieć pewność, że dostaniemy wiadomości „z pierwszej ręki”, powinniśmy zapytać serwer wskazany w sekcji autorytet.
  • Dodatkowe (additional) – przetrzymuje dodatkowe informacje dotyczące statystyk (w jej skład wchodzi także EDNS z pseudosekcji OPT, informujący nas o wersji EDNS, jej flagach i wielkości pakietu UDP).

Oczywiście, w zapytaniu możemy wskazać rekord, o który zapytujemy. W przykładzie rekord TTL.

dig dummy-domain.com TTL

Do wyświetlenia opisanej na początku artykułu trasy zapytań, użyjemy poniższego polecenia.

dig dummy-domain.com +trace

Polecenie służące do wyświetlenia jedynie rekordów w strefie dns:

dig dummy-domain.com ANY +noall +answer

Ciekawoska – „IN” między rekordami oznacza, że zapytanie kierujemy przez sieć Internet.

Źródła

https://www.cloudflare.com/learning/dns/what-is-dns/
https://pl.wikipedia.org/wiki/Domain_Name_System
https://www.rootusers.com/12-dig-command-examples-to-query-dns-in-linux/
https://neverendingsecurity.wordpress.com/2015/04/13/dig-commands-cheatsheet/
https://mansfeld.pl/webhosting/co-to-jest-dns-jak-dziala/
https://www.kylos.pl/blog/co-to-jest-dns/


Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *