Jak korzystać z polecenia dig w systemie Linux
Opublikowany: 2022-01-29 Polecenie Linux dig
umożliwia wysyłanie zapytań do serwerów DNS i wyszukiwanie DNS. Możesz także znaleźć domenę, do której prowadzi adres IP. Pokażemy Ci jak!
Jak działa dowództwo kopania
Ludzie używają polecenia Linux dig
do wysyłania zapytań do serwerów DNS (Domain Name System). dig
to akronim od Domain Information Groper. Za pomocą dig
można wysyłać zapytania do serwerów DNS o informacje dotyczące różnych rekordów DNS, w tym adresów hostów, wymiany poczty, serwerów nazw i powiązanych informacji. Miał być narzędziem do diagnozowania problemów z DNS. Możesz go jednak użyć, aby przeglądać i dowiedzieć się więcej o DNS, który jest jednym z centralnych systemów, które utrzymują ruch routingu internetowego.
Internet wykorzystuje adresy protokołu internetowego (IP) do identyfikowania „lokalizacji” w sieci, ale ludzie używają nazw domen. Kiedy wpisujesz nazwę domeny do aplikacji, takiej jak przeglądarka internetowa lub klient SSH, coś musi zostać przetłumaczone z nazwy domeny na rzeczywisty adres IP. Tu właśnie wkracza system nazw domen.
Gdy używasz nazwy domeny z dowolnym programem podłączonym do Internetu, Twój router lokalny nie może jej rozwiązać (chyba że jest buforowany z poprzedniego żądania). Tak więc router wysyła zapytanie do serwera DNS dostawcy usług internetowych (ISP) lub dowolnego innego, do którego używania został skonfigurowany system. Są to tak zwane serwery prekursorów DNS.
Jeśli serwer DNS niedawno otrzymał to samo żądanie od kogoś innego na tym samym komputerze, odpowiedź może znajdować się w jego pamięci podręcznej. Jeśli tak jest, po prostu wysyła te same informacje z powrotem do twojego programu.
Jeśli serwer prekursora DNS nie może zlokalizować domeny w swojej pamięci podręcznej, kontaktuje się z głównym serwerem nazw DNS. Serwer główny nie będzie przechowywał informacji wymaganych do tłumaczenia nazw domen na adresy IP, ale będzie zawierał listy serwerów, które mogą pomóc w rozwiązaniu Twojego żądania.
Serwer główny sprawdza domenę najwyższego poziomu, do której należy nazwa Twojej domeny, na przykład .COM, .ORG, .CO.UK i tak dalej. Następnie wysyła listę serwerów domen najwyższego poziomu, które obsługują te typy domen, z powrotem do serwera prekursora DNS. Prekursorowy serwer DNS może następnie ponownie wysłać żądanie do serwera domeny najwyższego poziomu.
Serwer domeny najwyższego poziomu wysyła szczegóły autorytatywnego serwera nazw (na którym przechowywane są szczegóły domeny) z powrotem do serwera prekursora DNS. Następnie serwer DNS wysyła zapytanie do autorytatywnego serwera nazw, który obsługuje strefę domeny, którą pierwotnie wprowadziłeś do swojego programu. Autorytatywny serwer nazw wysyła adres IP z powrotem do serwera DNS, który z kolei odsyła go z powrotem do Ciebie.
Instalowanie kopa
dig
był już zainstalowany na naszych komputerach Ubuntu 18.04 i Fedora 30. Musieliśmy jednak zainstalować go na komputerze Manjaro 18.04 za pomocą następującego polecenia:
sudo pacman -Sy bind-tools
Pierwsze kroki z dig
W naszym pierwszym przykładzie zwrócimy adresy IP powiązane z nazwą domeny. Często wiele adresów IP jest powiązanych z jedną nazwą domeny. Dzieje się tak często, na przykład, gdy używane jest równoważenie obciążenia.
Używamy opcji +short
query, jak pokazano poniżej, która daje nam zwięzłą odpowiedź:
dig howtogeek.com +krótko
Wszystkie adresy IP powiązane z domeną howtogeek.com są dla nas wymienione. Na drugim końcu spektrum, jeśli nie użyjemy opcji +short
query, wynik będzie dość szczegółowy.
Więc wpisujemy następujące, aby przepuścić go przez less
:
kop howtogeek.com | mniej
Dane wyjściowe są wyświetlane w less
, jak pokazano poniżej.
Oto pełna lista:
; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> howtogeek.com ;; opcje globalne: +cmd ;; Otrzymałem odpowiedź: ;; ->>NAGŁÓWEK<<- opcode: QUERY, status: NOERROR, id: 12017 ;; flagi: qr rd ra; ZAPYTANIE: 1, ODPOWIEDŹ: 4, AUTORYTET: 0, DODATKOWE: 1 ;; PSEUDEKCJA OPCJI: ; EDNS: wersja: 0, flagi:; udp: 65494 ;; SEKCJA PYTAŃ: ;howtogeek.com. W ;; ODPOWIEDŹ SEKCJA: howtogeek.com. 3551 W 151.101.194.217 howtogeek.com. 3551 W 151.101.130.217 howtogeek.com. 3551 W 151.101.66.217 howtogeek.com. 3551 W 151.101.2.217 ;; Czas zapytania: 0 ms ;; SERWER: 127.0.0.53#53(127.0.0.53) ;; KIEDY: niedz. 22 mar 07:44:37 EDT 2020 ;; ROZMIAR MSG rcvd: 106
Przeanalizujmy ten kawałek po kawałku.
nagłówek
Najpierw spójrzmy na to, co mamy w nagłówku:
; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> howtogeek.com ;; opcje globalne: +cmd ;; Otrzymałem odpowiedź: ;; ->>NAGŁÓWEK<<- opcode: QUERY, status: NOERROR, id: 12017 ;; flagi: qr rd ra; ZAPYTANIE: 1, ODPOWIEDŹ: 4, AUTORYTET: 0, DODATKOWE: 1
A oto, co to wszystko oznacza:
- Pierwsza linia: wersja
dig
i domena, której dotyczy zapytanie. - Opcje globalne: jak zobaczymy, możesz użyć
dig
do jednoczesnego wysyłania zapytań do wielu domen. Ten wiersz pokazuje opcje, które zostały zastosowane do wszystkich zapytań domeny. W naszym prostym przykładzie była to po prostu domyślna opcja+cmd
(polecenie). - Opcode: Zapytanie: jest to typ żądanej operacji, która w tym przypadku była
query
. Ta wartość może być równieżiquery
dla zapytania odwrotnego lubstatus
, jeśli tylko testujesz stan systemu DNS. - Status: Brak błędu: nie było błędów, a żądanie zostało poprawnie rozwiązane.
- ID: 12017 : Ten losowy identyfikator łączy żądanie i odpowiedź razem.
- Flagi: qr rd ra: Oznaczają
query
,recursion desired
recursion available
. Rekurencja to jedna z form wyszukiwania DNS (druga jest iteracyjna). Możesz również zobaczyćAA
, co oznacza odpowiedź autorytatywną, co oznacza, że odpowiedzi dostarczył autorytatywny serwer nazw. - Zapytanie: 1: Liczba zapytań w tej sesji, czyli jedno.
- Odpowiedź: 4: Liczba odpowiedzi w tej odpowiedzi, czyli cztery.
- Uprawnienia: 0: liczba odpowiedzi, które przyszły z autorytatywnego serwera nazw, która w tym przypadku wynosiła zero. Odpowiedź została zwrócona z pamięci podręcznej serwera prekursora DNS. W odpowiedzi nie będzie sekcji autorytatywnej.
- Dodatkowe: 1: Jest jedna dodatkowa informacja. (O dziwo, nic nie jest wymienione, chyba że ta wartość wynosi dwa lub więcej).
Pseudosekcja opt
Następnie widzimy następujące elementy w pseudosekcji Opt:
;; PSEUDEKCJA OPCJI: ; EDNS: wersja: 0, flagi:; udp: 65494
Rozłóżmy to:
- EDNS: wersja 0: Wersja systemu rozszerzeń dla DNS, która jest używana. EDNS przesyła rozszerzone dane i flagi, zwiększając rozmiar pakietów protokołu UDP (User Datagram Protocol). Wskazuje na to flaga zmiennej wielkości.
- flagi: nie są używane żadne flagi.
- udp : 4096: Rozmiar pakietu UDP.
Sekcja pytań
W sekcji Pytanie widzimy, co następuje:
;; SEKCJA PYTAŃ: ;howtogeek.com. W
Oto, co to oznacza:
- howtogeek.com: nazwa domeny, o którą pytamy.
- IN: Robimy zapytanie o klasę internetową.
- O: O ile nie określimy inaczej,
dig
zażąda rekordu A (adresu) z serwera DNS.
Sekcja odpowiedzi
Sekcja odpowiedzi zawiera następujące cztery odpowiedzi, które otrzymaliśmy z serwera DNS:
howtogeek.com. 3551 W 151.101.194.217 howtogeek.com. 3551 W 151.101.130.217 howtogeek.com. 3551 W 151.101.66.217 howtogeek.com. 3551 W 151.101.2.217
Oto, co oznaczają te odpowiedzi:
- 3551: To jest czas życia (TTL), 32-bitowa liczba całkowita ze znakiem, która przechowuje przedział czasu, dla którego rekord może być buforowany. Po wygaśnięciu dane muszą zostać użyte w odpowiedzi na żądanie, dopóki nie zostaną odświeżone przez serwer DNS.
- IN: Zrobiliśmy zapytanie o klasę internetową.
- O: Poprosiliśmy o rekord A z serwera DNS.
Sekcja Statystyki
Statystyki to ostatnia sekcja i zawiera następujące informacje:
;; Czas zapytania: 0 ms ;; SERWER: 127.0.0.53#53(127.0.0.53) ;; KIEDY: niedz. 22 mar 07:44:37 EDT 2020 ;; ROZMIAR MSG rcvd: 106
Oto, co mamy:
- Czas zapytania: 0 ms: czas potrzebny na otrzymanie odpowiedzi.
- SERWER: 127.0.0.53#53(127.0.0.53): Adres IP i numer portu serwera DNS, który odpowiedział. W tym przypadku wskazuje na lokalny program rozwiązywania problemów z buforowaniem. Powoduje to przekazywanie żądań DNS do dowolnego skonfigurowanego nadrzędnego serwera DNS. Na komputerze testowym Manajro podany tutaj adres to 8.8.8.8#53, który jest publiczną usługą DNS Google.
- KIEDY: Sun Mar 22 07:44:37 EDT 2020: Kiedy złożono wniosek.
- MSG SIZE rcvd: 106: Rozmiar wiadomości otrzymanej z serwera DNS.
Bycie selektywnym
Nie musisz zadowalać się dwiema skrajnościami: zaciśniętymi ustami i gadatliwym. Polecenie dig
pozwala selektywnie włączać lub wyłączać sekcje z wyników.
Następujące opcje zapytania usuną tę sekcję z wyników:
- +nocomments: nie pokazuj linii komentarzy.
- +noauthority: Nie pokazuj sekcji uprawnień.
- +noadditional: Nie pokazuj dodatkowej sekcji.
- +nostats: Nie pokazuj sekcji statystyk.
- + brak odpowiedzi: nie pokazuj sekcji odpowiedzi.
- +noall: Niczego nie pokazuj!
Opcja zapytania +noall
jest zwykle łączona z jedną z powyższych, aby uwzględnić sekcję w wynikach. Tak więc zamiast wpisywać długi ciąg opcji zapytania, aby wyłączyć wiele sekcji, możesz użyć +noall
, aby je wszystkie wyłączyć.
Następnie możesz użyć następujących włączających opcji zapytań, aby ponownie włączyć te, które chcesz wyświetlić:
- +komentarze: Pokaż linie komentarza.
- +autorytet: Pokaż sekcję autorytetu.
- +dodatkowe: Pokaż dodatkową sekcję.
- +statystyki: Pokaż sekcję statystyk.
- +odpowiedź: Pokaż sekcję odpowiedzi.
- +all: Pokaż wszystko.
Wpisujemy następujące polecenie, aby złożyć wniosek i wykluczyć wiersze komentarza:
dig howtogeek.com + bez komentarzy
Jeśli użyjemy samej opcji zapytania +noall
, jak pokazano poniżej, nie otrzymamy żadnych użytecznych wyników:
kop howtogeek.com +noall
Możemy selektywnie dodawać sekcje, które chcemy zobaczyć. Aby dodać sekcję odpowiedzi, wpisujemy:
dig howtogeek.com +noall +odpowiedź
Jeśli wpiszemy następujące polecenie, aby włączyć +stats
, zobaczymy również sekcję statystyk:
dig howtogeek.com +noall +odpowiedź +statystyki
+noall +answer
jest często używana. W razie potrzeby możesz dodać inne sekcje do wiersza poleceń. Jeśli chcesz uniknąć wpisywania +noall +answer
w wierszu poleceń za każdym razem, gdy używasz dig
, możesz umieścić je w pliku konfiguracyjnym o nazwie „.digrc”. Znajduje się w twoim katalogu domowym.
Wpisujemy następujące polecenie, aby utworzyć jedno z echo
:
echo "+noall +odpowiedź" > $HOME/.digrc
Następnie możemy wpisać następujące polecenie, aby sprawdzić jego zawartość:
kot .digrc
Te dwie opcje zostaną teraz zastosowane do wszystkich przyszłych zastosowań dig
, jak pokazano poniżej:
kopia ubuntu.org
kop linux.org
kop github.com
Ten plik konfiguracyjny dig
będzie używany w pozostałych przykładach w tym artykule.
Rekordy DNS
Informacje zwracane do Twoich dig
wyszukiwania danych są pobierane z różnych typów rekordów przechowywanych na serwerze DNS. O ile nie poprosimy o coś innego, dig
pyta rekord A (adres). Poniżej przedstawiono typy rekordów powszechnie używanych w programie dig
:
- Rekord: łączy domenę z adresem IP w wersji 4.
- Rekord MX: rekordy wymiany poczty kierują wiadomości e-mail wysyłane do domen na właściwy 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. Zazwyczaj mogą być używane do tłumienia sfałszowanych lub sfałszowanych wiadomości e-mail.
- Rekord SOA: Rekordy początku urzędu mogą zawierać wiele informacji o domenie. Tutaj możesz znaleźć główny serwer nazw, osobę odpowiedzialną, sygnaturę czasową zmian, częstotliwość odświeżania stref oraz szereg limitów czasowych dla ponownych prób i porzuceń.
- TTL: Czas życia to ustawienie dla każdego rekordu DNS, które określa, jak długo serwer prekursora DNS może buforować każde zapytanie DNS. Po upływie tego czasu dane należy odświeżyć dla kolejnych żądań.
- DOWOLNY: To mówi
dig
, aby zwrócił każdy typ rekordu DNS, jaki może.
Określenie typu rekordu A nie zmienia domyślnej akcji, która polega na zapytaniu rekordu adresu i uzyskaniu adresu IP, jak pokazano poniżej:
kop redhat.com A
Aby wysłać zapytanie do rekordów wymiany poczty, używamy następującej flagi MX:
kop yahoo.com MX
Flaga serwera nazw zwraca następującą nazwę głównych serwerów nazw powiązanych z domeną najwyższego poziomu:
kop fedora.com NS
Aby zapytać o początek rekordu autorytetu, wpisujemy następującą flagę SOA:
kop manjaro.com SOA
Flaga TTL pokaże nam czas życia danych w pamięci podręcznej serwera DNS. Jeśli złożymy serię próśb, zobaczymy, że czas życia zmniejsza się do zera, a następnie wracamy do wartości początkowej.
Wpisujemy:
kopia usa.gov TTL
Aby zobaczyć rekordy tekstowe, wpisujemy flagę TX:
kopia usa.gov TXT
Określanie serwera DNS
Jeśli chcesz użyć konkretnego serwera DNS dla swojego żądania, możesz użyć znaku at ( @
), aby przekazać go do dig
jako parametr wiersza poleceń.
Z domyślnym serwerem DNS (patrz poniżej), dig
odwołuje się do lokalnego programu rozpoznawania skrótów pamięci podręcznej pod adresem 127.0.0.53.
kop usa.gov +statystyki
Teraz wpisujemy następujące polecenie, aby użyć publicznego serwera DNS Google pod adresem 8.8.8.8:
kopać @8.8.8.8 usa.gov +statystyki
Korzystanie z dig z wieloma domenami
Możemy przekazać wiele domen do dig
w wierszu poleceń, jak pokazano poniżej:
kop ubuntu.org fedora.org manjaro.com
Jeśli regularnie sprawdzasz zestaw domen, możesz przechowywać je w pliku tekstowym i przekazać do dig
. Wszystkie domeny w pliku zostaną po kolei sprawdzone.
Nasz plik nazywa się „domains.txt”. Użyjemy cat
, aby wyświetlić jego zawartość, a następnie przekażemy go do dig
z -f
(plik). Wpisujemy:
cat domains.txt
dig -f domeny.txt
Odwrotne wyszukiwania DNS
Jeśli masz adres IP i chcesz wiedzieć, dokąd idzie, możesz spróbować odwrotnego wyszukiwania DNS. Jeśli zostanie rozwiązany do serwera zarejestrowanego na serwerze DNS, możesz znaleźć jego domenę.
To, czy możesz, zależy od obecności PTR (rekordu wskaźnika). Rejestry PTR przekształcają adres IP na w pełni kwalifikowaną nazwę domeny. Jednak ponieważ nie są one obowiązkowe, nie zawsze są obecne w domenie.
Zobaczmy, czy uda nam się dowiedzieć, dokąd prowadzi nas adres IP 209.51.188.148. Wpisujemy następujące polecenie, korzystając z opcji -x
(odwrotne wyszukiwanie):
kopać -x 209.51.188.148
Presto! Adres IP jest tłumaczony na gnu.org.
Ponieważ PTR jest rekordem DNS i wiemy, że dig
może zażądać określonych rekordów DNS, czy nie moglibyśmy po prostu poprosić dig
o odzyskanie PTR dla nas? Tak, możemy, ale wymaga to trochę więcej pracy.
Musimy podać adres IP w odwrotnej kolejności i .in-addr.arpa
na końcu, jak pokazano poniżej:
dig ptr 148.188.51.209.in-addr.arpa
Otrzymujemy ten sam wynik; po prostu wymagało to trochę więcej wysiłku.
Czy możesz to kopać?
Wszyscy codziennie korzystamy z Internetu, a dociekliwe umysły często zastanawiały się, jak dzieje się magia, gdy wpisujemy nazwę strony internetowej w przeglądarce. Dzięki dig
możesz zbadać procesy tworzenia sieci.
Polecenia Linuksa | ||
Pliki | tar · pv · kot · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · dysk testowy · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · ogon · stat · ls · fstab · echo · mniej · chgrp · chown · rev · wygląd · stringi · typ · zmiana nazwy · zip · rozpakuj · montuj · umount · zainstaluj · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · konwertuj · rclone · shred · srm | |
Procesy | alias · ekran · top · ładne · renice · postęp · strace · systemd · tmux · chsh · historia · w · wsad · free · co · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · ściana · tak · kill · sen · sudo · su · czas · groupadd · usermod · grupy · lshw · zamknij · restart · halt · poweroff · passwd · lscpu · crontab · data · bg · fg | |
Sieć | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
POWIĄZANE: Najlepsze laptopy z systemem Linux dla programistów i entuzjastów