Jak korzystać z polecenia dig w systemie Linux

Przyjrzyjmy się temu fragmentowi szczegółowo.

DiG 9.11.3-1ubuntu1.11-Ubuntu> newsblog.pl.com ;; opcje globalne: + cmd ;; Otrzymano odpowiedź: ;; – >> NAGŁÓWEK

Poniżej wyjaśniamy znaczenie poszczególnych elementów:

Pierwsza linia informuje o wersji narzędzia dig oraz domenie, która była przedmiotem zapytania.
Opcje globalne: jak będzie widać, narzędzie dig pozwala na jednoczesne wysyłanie zapytań do wielu domen. Ten wiersz przedstawia opcje zastosowane do wszystkich zapytań. W naszym przykładzie ograniczyliśmy się do domyślnej opcji + cmd (polecenie).
Kod operacji: zapytanie, które wskazuje na typ żądanej operacji, w tym przypadku było to zapytanie. Możliwe jest również użycie iquery do zapytania odwrotnego lub statusu, gdy testujesz stan systemu DNS.
Status: Noerror – brak błędów, a zapytanie zostało pomyślnie rozwiązane.
ID: 12017 – ten unikalny identyfikator łączy zapytanie z odpowiedzią.
Flagi: qr rd ra – oznaczają zapytanie, żądaną rekursję i dostępność rekursji. Rekursja to jedna z metod przeszukiwania DNS (druga to metoda iteracyjna). Można także zobaczyć AA, co oznacza odpowiedź autorytatywną, co wskazuje, że odpowiedź pochodzi z autorytatywnego serwera nazw.
Zapytanie: 1 – liczba zapytań w tej sesji, która wynosi jeden.
Odpowiedź: 4 – liczba odpowiedzi w tej odpowiedzi wynosi cztery.
Autorytet: 0 – liczba odpowiedzi pochodzących od autorytatywnego serwera nazw, w tym przypadku wynosi zero, co oznacza, że odpowiedź została zwrócona z pamięci podręcznej serwera pośredniczącego DNS. W tej odpowiedzi nie ma sekcji autorytatywnej.
Dodatkowe: 1 – istnieje jedna informacja dodatkowa (dziwnym trafem, nic nie zostało wymienione, chyba że wartość ta wynosi dwa lub więcej).

Sekcja Opt Pseudosekcja

Następnie w sekcji Opt Pseudosekcja widzimy:

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494

Rozłóżmy to na czynniki:

EDNS: wersja 0: odnosi się do mechanizmów rozszerzeń dla DNS. EDNS przesyła dodatkowe dane oraz flagi, zwiększając rozmiar pakietów protokolu UDP. Wskazuje na to flaga o zmiennej wielkości.
flagi: brak używanych flag.
udp: 4096 – maksymalny rozmiar pakietu UDP.

Sekcja pytań

W sekcji Pytań widzimy następujące informacje:

;; QUESTION SECTION:
;newsblog.pl.com. IN A

newsblog.pl.com: nazwa domeny, którą pytamy.
IN: Klasa zapytania to klasa internetowa.
A: Bez dodatkowych wskazówek dig zażąda rekordu A (adresu) z serwera DNS.

Sekcja odpowiedzi

Sekcja Odpowiedzi zawiera cztery odpowiedzi, które uzyskaliśmy z serwera DNS:

newsblog.pl.com. 3551 IN A 151.101.194.217
newsblog.pl.com. 3551 IN A 151.101.130.217
newsblog.pl.com. 3551 IN A 151.101.66.217
newsblog.pl.com. 3551 IN A 151.101.2.217

Oto, co oznaczają te odpowiedzi:

3551: To jest czas życia (TTL), 32-bitowa liczba całkowita, która wskazuje okres, przez jaki rekord może być przechowywany w pamięci podręcznej. Po upływie tego czasu dane muszą być odświeżane przez serwer DNS w odpowiedzi na żądanie.
IN: Klasa zapytania to klasa internetowa.
A: Poprosiliśmy o rekord A z serwera DNS.

Sekcja Statystyki

Ostatnia sekcja, Statystyka, zawiera następujące informacje:

;; Query time: 0 msec 
;; SERVER: 127.0.0.53#53(127.0.0.53) 
;; WHEN: Sun Mar 22 07:44:37 EDT 2020 
;; MSG SIZE rcvd: 106

Oto, co mamy:

Czas zapytania: 0 msec – czas, który był potrzebny na uzyskanie odpowiedzi.
SERWER: 127.0.0.53 # 53 (127.0.0.53) – adres IP oraz numer portu serwera DNS, który odpowiedział. W tym przypadku odnosi się do lokalnego narzędzia do rozpoznawania DNS, które przekazuje zapytania do skonfigurowanego serwera DNS nadrzędnego. W komputerze testowym Manajro ten adres to 8.8.8.8 # 53, co oznacza publiczną usługę DNS Google.
KIEDY: Niedziela, 22 marca, 07:44:37 EDT 2020 – czas, kiedy zapytanie zostało złożone.
MSG SIZE rcvd: 106 – rozmiar wiadomości odebranej z serwera DNS.

Selektywność w wynikach

Nie musisz ograniczać się do dwóch skrajności: oszczędności w informacjach lub nadmiaru. Narzędzie dig pozwala na selektywne dodawanie lub pomijanie sekcji w wynikach.

Następujące opcje zapytania pozwolą usunąć konkretne sekcje z wyników:

+ nocomments: pomija linie komentarzy.
+ noauthority: pomija sekcję autorytatywną.
+ noadditional: pomija sekcję dodatkową.
+ nostats: pomija sekcję statystyk.
+ noanswer: pomija sekcję odpowiedzi.
+ noall: nie pokazuje nic!

Opcja + noall jest często łączona z jedną z powyższych, aby uwzględnić określoną sekcję w wynikach. Dlatego zamiast wpisywać wiele opcji zapytania, aby wyłączyć kilka sekcji, można użyć + noall, aby je wszystkie wyłączyć.

Możesz następnie użyć następujących opcji zapytania, aby ponownie włączyć sekcje, które chcesz widzieć:

+ comments: pokazuje linie komentarzy.
+ authority: pokazuje sekcję autorytatywną.
+ additional: pokazuje sekcję dodatkową.
+ stats: pokazuje sekcję statystyk.
+ answer: pokazuje sekcję odpowiedzi.
+ all: pokazuje wszystko.

Aby złożyć zapytanie i wykluczyć linie komentarzy, używamy następującego polecenia:

dig newsblog.pl.com +nocomments

Jeśli użyjemy samej opcji + noall, jak pokazano poniżej, nie uzyskamy żadnych użytecznych wyników:

dig newsblog.pl.com +noall

Możemy selektywnie dodawać sekcje, które chcemy zobaczyć. Aby dodać sekcję odpowiedzi, wpisujemy:

dig newsblog.pl.com +noall +answer

Aby włączyć sekcję statystyk, użyjemy następującego polecenia:

dig newsblog.pl.com +noall +answer +stats

Często używana jest kombinacja + noall oraz + answer. W razie potrzeby można dodać inne sekcje do polecenia. Jeśli chcesz uniknąć wpisywania + noall + answer za każdym razem, gdy używasz dig, możesz umieścić te opcje w pliku konfiguracyjnym o nazwie „.digrc”, który znajduje się w twoim katalogu domowym.

Aby stworzyć ten plik, wystarczy użyć polecenia echo:

echo "+noall +answer" > $HOME/.digrc

Następnie możemy sprawdzić jego zawartość, wpisując:

cat .digrc

Te dwie opcje zostaną teraz zastosowane do wszystkich przyszłych użyć narzędzia dig, co widać w poniższych przykładach:

dig ubuntu.org
dig linux.org
dig github.com

Ten plik konfiguracyjny dig będzie używany w dalszej części tego artykułu.

Rodzaje rekordów DNS

Informacje zwrócone w odpowiedzi na zapytania są pobierane z różnych typów rekordów przechowywanych na serwerze DNS. Jeśli nie poprosimy o coś innego, dig domyślnie zapytuje o rekord A (adres). Poniżej przedstawiamy typowe typy rekordów używanych w narzędziu dig:

Rekord A: łączy nazwę domeny z adresem IP w wersji 4.
Rekord MX: rekordy wymiany poczty kierują wiadomości e-mail wysyłane do domeny na odpowiedni serwer pocztowy.
Rekord NS: Rekordy serwera nazw delegują domenę (lub subdomenę) do zestawu serwerów DNS.
Rekord TXT: Rekordy tekstowe przechowują informacje tekstowe dotyczące domeny, często używane do blokowania fałszywych wiadomości e-mail.
Rekord SOA: Rekordy początku urzędowania zawierają różne informacje o domenie, takie jak główny serwer nazw, osoba odpowiedzialna, sygnatury czasowe zmian, częstotliwość odświeżania strefy oraz limity dla ponownych prób i porzuceń.
TTL: Czas życia to ustawienie dla każdego rekordu DNS, które określa, jak długo serwer pośredniczący DNS może buforować dane. Po upływie tego czasu dane muszą być odświeżane w przypadku kolejnych żądań.
ANY: Informuje dig, aby zwrócił wszystkie możliwe typy rekordów DNS.

Określenie typu rekordu A nie zmienia domyślnej akcji, która polega na wysłaniu zapytania o rekord adresu i uzyskaniu adresu IP, jak pokazano poniżej:

dig redhat.com A

Aby zapytać o rekordy wymiany poczty, używamy flagi MX:

dig yahoo.com MX

Flaga NS zwraca nazwy głównych serwerów nazw związanych z domeną najwyższego poziomu:

dig fedora.com NS

Aby zapytać o rekord SOA, wpisujemy:

dig manjaro.com SOA

Flaga TTL pokaże nam czas życia danych w pamięci podręcznej serwera DNS. W przypadku serii zapytań widzimy, jak czas życia zmniejsza się do zera, a następnie wraca do wartości początkowej.

Wpisujemy:

dig usa.gov TTL

Aby zobaczyć rekordy tekstowe, używamy flagi TXT:

dig usa.gov TXT

Wybór serwera DNS

Jeśli chcesz skorzystać z konkretnego serwera DNS do zapytania, możesz użyć znaku @, aby przekazać go do dig jako parametr wiersza polecenia.

W przypadku domyślnego serwera DNS (patrz poniżej) dig odnosi się do lokalnego narzędzia do rozpoznawania DNS pod adresem 127.0.0.53.

dig usa.gov +stats

Aby użyć publicznego serwera DNS Google pod adresem 8.8.8.8, wpisujemy:

dig @8.8.8.8 usa.gov +stats

Korzystanie z dig dla wielu domen

Możemy przekazać wiele domen do narzędzia dig w wierszu poleceń, jak pokazano poniżej:

dig ubuntu.org fedora.org manjaro.com

Jeśli regularnie sprawdzasz zestaw domen, możesz zapisać je w pliku tekstowym i przekazać do dig. Wszystkie domeny w pliku zostaną przetworzone kolejno.

Stworzymy plik o nazwie „domains.txt”. Użyjemy polecenia cat, aby wyświetlić jego zawartość, a następnie przekażemy go do dig z opcją -f (plik). Wpisujemy:

cat domains.txt
dig -f domains.txt

Odwrotne wyszukiwanie DNS

Jeśli masz adres IP i chcesz sprawdzić, do jakiej domeny się odnosi, możesz wykonać odwrotne wyszukiwanie DNS. Jeśli serwer jest zarejestrowany w systemie DNS, być może uda się ustalić jego domenę.

Możliwość ta zależy od obecności rekordu PTR (wskaźnika). Rekordy PTR tłumaczą adres IP na w pełni kwalifikowaną nazwę domeny. Jednak nie są one obowiązkowe, więc nie zawsze są dostępne dla danej domeny.

Sprawdźmy, czy możemy dowiedzieć się, gdzie prowadzi adres IP 209.51.188.148. Używamy opcji -x (odwrotne wyszukiwanie):

dig -x 209.51.188.148

Udało się! Adres IP został rozpoznany jako gnu.org.

Skoro rekord PTR jest częścią systemu DNS, można by pomyśleć, że moglibyśmy po prostu zażądać rekordu PTR za pomocą dig. Tak, jest to możliwe, ale wymaga to nieco więcej pracy.

Musimy przedstawić adres IP w odwrotnej kolejności i dodać sufiks .in-addr.arpa, jak pokazano poniżej:

dig ptr 148.188.51.209.in-addr.arpa

Otrzymujemy ten sam wynik; wymagało to tylko nieco więcej wysiłku.

Odkrywanie z pomocą dig

Każdego dnia korzystamy z internetu, a dociekliwi użytkownicy zastanawiają się, jak magia zachodzi, gdy wpisujemy adres strony w przeglądarkę. Dzięki narzędziu dig możemy zbadać procesy w sieci.


newsblog.pl