4 kluczowe przykłady poleceń, które można poznać jako administrator lub programista

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