W pracy administratora systemów, sytuacja idealnie prezentuje się tylko do pewnego momentu. Gdy pojawiają się problemy, kluczowe stają się narzędzia do diagnostyki i rozwiązywania awarii. Warto być na to przygotowanym.
Administratorzy systemów mają niełatwe zadanie. Sama konieczność utrzymywania gotowości telefonicznej przez całą dobę zasługuje na uznanie.
Jednak celem tego artykułu nie jest analiza ich obowiązków zawodowych. Chcemy przedstawić zestaw narzędzi, które pomogą w rozwiązywaniu problemów związanych z DNS.
Czym są polecenia Dig?
Polecenia Dig, będące skrótem od Domain Information Groper, to szybki sposób na sprawdzenie poprawności działania serwerów DNS.
Za pomocą prostych poleceń można sprawdzić adres IP serwera, serwery nazw, rekordy MX, czas życia (TTL) i inne istotne parametry.
Zanim przejdziemy do podstawowych poleceń, sprawdźmy, czy narzędzia Dig są zainstalowane w systemie:
$ dig -v
Prawidłowa odpowiedź powinna zawierać numer wersji Dig, na przykład:
DiG 9.18.1-1ubuntu1-Ubuntu
Jeśli nie uzyskasz podobnej odpowiedzi, konieczna będzie instalacja narzędzi Dig.
Użytkownicy systemów Ubuntu i Debian mogą skorzystać z następującego polecenia:
$ sudo apt-get install dnsutils
Natomiast w systemach CentOS lub RHEL należy użyć:
$ sudo yum install bind-utils
Po instalacji, ponownie użyj polecenia `dig -v`, aby upewnić się, że wszystko przebiegło pomyślnie.
W kolejnych sekcjach omówimy różne polecenia Dig, które mogą okazać się przydatne w pracy administratora.
Weryfikacja adresu IP
To jedno z najprostszych zastosowań polecenia Dig, pozwalające na odczytanie adresu IP serwera przypisanego do danej nazwy domeny.
Zacznijmy od podstawowej wersji polecenia: `dig newsblog.pl.com`
$ dig newsblog.pl.com ; <<>> DiG 9.18.1-1ubuntu1-Ubuntu <<>> newsblog.pl.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38635 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;newsblog.pl.com. IN A ;; ANSWER SECTION: newsblog.pl.com. 67 IN A 172.66.43.163 newsblog.pl.com. 67 IN A 172.66.40.93 ;; Query time: 4 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP) ;; WHEN: Wed Nov 09 04:29:58 UTC 2022
Kluczowy jest status `NOERROR` w sekcji nagłówkowej. Oznacza to, że zapytanie zostało obsłużone bez błędów.
Poszukiwany adres IP serwera znajduje się w sekcji `ANSWER`, są to 172.66.40.93 (serwer podstawowy) i 172.66.43.163 (serwer zapasowy).
Sekcja `QUESTION` zawiera oryginalne zapytanie, natomiast ostatnia sekcja prezentuje statystyki wykonanego zapytania.
Jednakże ilość informacji może być nadmiarowa.
Aby uzyskać bardziej czytelny wynik, można użyć:
$ dig newsblog.pl.com +noall +answer newsblog.pl.com. 53 IN A 172.66.43.163 newsblog.pl.com. 53 IN A 172.66.40.93
Używając `+noall`, pomijamy niepotrzebne informacje, a `+answer` wyświetla tylko odpowiedź.
Jeszcze krótszy rezultat otrzymamy za pomocą:
$ dig newsblog.pl.com +short 172.66.43.163 172.66.40.93
To było zapytanie o podstawowy rekord A DNS. Zobaczmy teraz, jak wyszukiwać inne typy rekordów.
Wyszukiwanie konkretnych rekordów DNS
Serwery nazw, będące autorytatywnymi serwerami DNS dla domeny, można znaleźć za pomocą zmiennej `ns`.
$ dig newsblog.pl.com ns +short olga.ns.cloudflare.com. todd.ns.cloudflare.com.
Z kolei zmienna `mx` pozwala na uzyskanie informacji o serwerach pocztowych i ich priorytetach.
$ dig newsblog.pl.com mx +noall +answer newsblog.pl.com. 300 IN MX 1 aspmx.l.google.com. newsblog.pl.com. 300 IN MX 10 alt3.aspmx.l.google.com. newsblog.pl.com. 300 IN MX 10 alt4.aspmx.l.google.com. newsblog.pl.com. 300 IN MX 5 alt1.aspmx.l.google.com. newsblog.pl.com. 300 IN MX 5 alt2.aspmx.l.google.com.
Podobnie zmienne `txt`, `aaaa`, `cname` itp. mogą być wykorzystane do wyszukiwania różnych typów rekordów DNS.
Śledzenie trasy DNS
Ta funkcja pozwala na prześledzenie ścieżki od głównych serwerów nazw, poprzez serwery autorytatywne, aż do adresu IP domeny.
$ dig newsblog.pl.com +trace ; <<>> DiG 9.18.1-1ubuntu1-Ubuntu <<>> newsblog.pl.com +trace ;; global options: +cmd . 322660 IN NS a.root-servers.net. . 322660 IN NS b.root-servers.net. . 322660 IN NS c.root-servers.net. . 322660 IN NS d.root-servers.net. . 322660 IN NS e.root-servers.net. . 322660 IN NS f.root-servers.net. . 322660 IN NS g.root-servers.net. . 322660 IN NS h.root-servers.net. . 322660 IN NS i.root-servers.net. . 322660 IN NS j.root-servers.net. . 322660 IN NS k.root-servers.net. . 322660 IN NS l.root-servers.net. . 322660 IN NS m.root-servers.net. ;; Received 811 bytes from 127.0.0.53#53(127.0.0.53) in 16 ms com. 172800 IN NS i.gtld-servers.net. com. 172800 IN NS k.gtld-servers.net. com. 172800 IN NS e.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 IN NS h.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS d.gtld-servers.net. com. 172800 IN NS f.gtld-servers.net. com. 172800 IN NS j.gtld-servers.net. com. 172800 IN NS g.gtld-servers.net. com. 172800 IN NS a.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net. com. 172800 IN NS l.gtld-servers.net. com. 86400 IN DS 30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766 com. 86400 IN RRSIG DS 8 1 86400 20221121170000 20221108160000 18733 . ZgW2dKMBP6rqIgQSGN5uzFhNFZuIPUg7JrkXzgE9VKh68LOIuQlFgTTV xt3Sz4ytgru8JWcwCHgiqCTjbaN3WeHcrDVf0ItG0Az/01ofBWfoAu9S 1JFYcOrYkTUidn8R4vROkwzsTrZMirnB/4yrA4MD5thWVBr3IczcnFto DbADuw8Qy/RUEUfcu+LcQ4Ge+OzIP8eE1T6+nbMRqFZBSMFoBO1w0Mmk xNGyEclfFkymQ4CsYxnvYVstljpLqh1OhoAEwY6D+0cSh9dKNQ5LKhgq UXqfJ+zmdcvL+cVvMjfcB0Wj6/hmEkpEp1ISawlTjFUDgiKNZxiow02r JL4tsw== ;; Received 1201 bytes from 192.33.4.12#53(c.root-servers.net) in 148 ms newsblog.pl.com. 172800 IN NS olga.ns.cloudflare.com. newsblog.pl.com. 172800 IN NS todd.ns.cloudflare.com. newsblog.pl.com. 86400 IN DS 2371 13 2 CBAA2018F41B29985DAEDE7F127D4F9626ADA609665CEBAB0011903B 7C639254 newsblog.pl.com. 86400 IN RRSIG DS 8 2 86400 20221112051535 20221105030535 53929 com. sbqDGqvxmEAjS4KRx8LvQAG9IusLgRRm5GPDf+AFkXddGgfJN37vJP1H 4JKMriWtgXZHc3g1ANMNjij+5J1K3GgeNy2w0UYc7xHkmvhsd15pDvi9 +BoiBsjC8ffznyli8sV8XVhm65oKDHJRx5YEtXUVA4p9hegO0NHDccvt ujQKMShBWX3nxs7P4onL13gspVScOoZgzXL3470UfDW7MA== ;; Received 601 bytes from 2001:501:b1f9::30#53(m.gtld-servers.net) in 144 ms newsblog.pl.com. 300 IN A 172.66.43.163 newsblog.pl.com. 300 IN A 172.66.40.93 newsblog.pl.com. 300 IN RRSIG A 13 2 300 20221110051242 20221108031242 34505 newsblog.pl.com. tKDYd/FHjs/aRHeOQJlsxXDJYtVcHA4G16QRJKlhFyYkZ2TmLKNIc6eM vXfpO91IVArK67KbyW5lIxI5cCxcQg== ;; Received 183 bytes from 172.64.32.137#53(olga.ns.cloudflare.com) in 16 ms
Podobnie jak wcześniej, można użyć `+short` lub `+noall +answer` dla uzyskania skróconej odpowiedzi.
Odwrotne wyszukiwanie DNS
Odwrotne wyszukiwanie DNS pozwala na uzyskanie rekordu PTR związanego z danym adresem IP. Jest to działanie odwrotne do rekordu A DNS, umożliwiając przypisanie nazwy domeny do adresu IP.
Należy pamiętać, że w przypadku braku rekordu PTR, sekcja odpowiedzi będzie pusta.
Polecenie to ma postać `dig -x adres IP`.
[email protected]:~$ dig yahoo.com +short 74.6.143.26 74.6.231.20 98.137.11.164 98.137.11.163 74.6.143.25 74.6.231.21 [email protected]:~$ dig -x 74.6.143.26 ; <<>> DiG 9.18.1-1ubuntu1-Ubuntu <<>> -x 74.6.143.26 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32267 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;26.143.6.74.in-addr.arpa. IN PTR ;; ANSWER SECTION: 26.143.6.74.in-addr.arpa. 600 IN PTR media-router-fp74.prod.media.vip.bf1.yahoo.com. ;; AUTHORITY SECTION: 143.6.74.in-addr.arpa. 172800 IN NS ns3.yahoo.com. 143.6.74.in-addr.arpa. 172800 IN NS ns4.yahoo.com. 143.6.74.in-addr.arpa. 172800 IN NS ns5.yahoo.com. 143.6.74.in-addr.arpa. 172800 IN NS ns2.yahoo.com. 143.6.74.in-addr.arpa. 172800 IN NS ns1.yahoo.com. ;; Query time: 192 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP) ;; WHEN: Wed Nov 09 04:17:08 UTC 2022 ;; MSG SIZE rcvd: 203
Jak widać w sekcji `Answer`, nazwa domeny `media-router-fp74.prod.media.vip.bf1.yahoo.com/` jest powiązana z adresem IP 74.6.143.26.
Próba odwiedzenia tego adresu URL może przekierować na stronę główną wyszukiwarki Yahoo.
Nie zawsze jednak te długie, techniczne adresy URL przekładają się na użyteczne adresy internetowe.
Odpytywanie konkretnych serwerów DNS
W niektórych sytuacjach konieczne może być wykonanie zapytania DNS na konkretnym serwerze. Można to osiągnąć, dodając do polecenia adres IP serwera DNS, używając składni `@adres_IP_serwera`.
$ dig @1.1.1.1 newsblog.pl.com +noall +answer +stats newsblog.pl.com. 300 IN A 172.66.40.93 newsblog.pl.com. 300 IN A 172.66.43.163 ;; Query time: 156 msec ;; SERVER: 1.1.1.1#53(1.1.1.1) (UDP) ;; WHEN: Wed Nov 09 04:18:56 UTC 2022 ;; MSG SIZE rcvd: 74
W sekcji statystyk widzimy, że zapytanie zostało wykonane na serwerze 1.1.1.1, który należy do firmy Cloudflare.
Podobnie, można odpytywać serwery DNS Google (8.8.8.8):
$ dig @8.8.8.8 newsblog.pl.com mx +noall +answer +stats newsblog.pl.com. 300 IN MX 1 aspmx.l.google.com. newsblog.pl.com. 300 IN MX 10 alt3.aspmx.l.google.com. newsblog.pl.com. 300 IN MX 10 alt4.aspmx.l.google.com. newsblog.pl.com. 300 IN MX 5 alt1.aspmx.l.google.com. newsblog.pl.com. 300 IN MX 5 alt2.aspmx.l.google.com. ;; Query time: 44 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) (UDP) ;; WHEN: Wed Nov 09 04:23:16 UTC 2022 ;; MSG SIZE rcvd: 157
Podsumowanie ⛏️
Polecenia Dig służą do wyszukiwania informacji o DNS i diagnozowania ewentualnych problemów. Ich zaletą jest szybkość i łatwość zapamiętania składni.
Dodatkowo, narzędzia Dig można zainstalować na systemach macOS i Windows, co zwiększa ich uniwersalność.
PS: Jeśli dotarłeś aż tutaj, to warto wspomnieć o bibliotece newsblog.pl Sysadmin, która oferuje kompleksowe rozwiązania dla problemów sysadminów.
newsblog.pl