Cum să utilizați comanda dig pe Linux
Publicat: 2022-01-29 Comanda Linux dig
vă permite să interogați serverele DNS și să efectuați căutări DNS. Puteți găsi, de asemenea, domeniul la care o adresă IP duce înapoi. Vă vom arăta cum!
Cum funcționează comanda dig
Oamenii folosesc comanda Linux dig
pentru a interoga serverele DNS (Domain Name System). dig
este un acronim pentru Domain Information Groper. Cu dig
, puteți interoga serverele DNS pentru informații referitoare la diferite înregistrări DNS, inclusiv adrese de gazdă, schimburi de e-mail, servere de nume și informații conexe. Acesta a fost menit să fie un instrument pentru diagnosticarea problemelor DNS. Cu toate acestea, îl puteți folosi pentru a căuta și a afla mai multe despre DNS, care este unul dintre sistemele centrale care păstrează traficul de rutare pe internet.
Internetul folosește adrese de protocol de internet (IP) pentru a identifica „locațiile” de pe web, dar oamenii folosesc nume de domenii. Când introduceți un nume de domeniu într-o aplicație, cum ar fi un browser web sau un client SSH, ceva trebuie să se traducă de la numele de domeniu la adresa IP reală. Aici intervine sistemul de nume de domeniu.
Când utilizați un nume de domeniu cu orice program conectat la internet, routerul local nu îl poate rezolva (cu excepția cazului în care este stocat în cache dintr-o solicitare anterioară). Deci, routerul dvs. interogează fie serverul DNS al furnizorului dvs. de servicii de internet (ISP), fie orice alt server pe care l-ați configurat sistemul pentru a-l utiliza. Acestea se numesc servere precursoare DNS.
Dacă serverul DNS a primit recent aceeași solicitare de la altcineva pe același computer, răspunsul ar putea fi în memoria cache. Dacă acesta este cazul, pur și simplu trimite aceleași informații înapoi la programul dvs.
Dacă serverul precursor DNS nu poate localiza domeniul în cache-ul său, contactează un server de nume rădăcină DNS. Un server rădăcină nu va deține informațiile necesare pentru a rezolva numele de domenii în adrese IP, dar va deține liste de servere care vă pot ajuta cu solicitarea dvs.
Serverul rădăcină se uită la domeniul de nivel superior căruia îi aparține numele de domeniu, cum ar fi .COM, .ORG, .CO.UK și așa mai departe. Apoi trimite o listă a serverelor de domeniu de nivel superior care se ocupă de acele tipuri de domenii înapoi către serverul precursor DNS. Serverul precursor DNS își poate face apoi cererea din nou, către un server de domeniu de nivel superior.
Serverul de domeniu de nivel superior trimite detaliile serverului de nume autorizat (unde sunt stocate detaliile domeniului) înapoi către serverul precursor DNS. Serverul DNS interogează apoi serverul de nume autorizat care găzduiește zona domeniului pe care l-ai introdus inițial în programul tău. Serverul de nume autorizat trimite adresa IP înapoi serverului DNS, care, la rândul său, ți-o trimite înapoi.
Instalarea dig
dig
a fost deja instalat pe computerele noastre Ubuntu 18.04 și Fedora 30. Cu toate acestea, a trebuit să-l instalăm pe computerul Manjaro 18.04 cu următoarea comandă:
sudo pacman -Sy bind-tools
Noțiuni introductive cu dig
În primul nostru exemplu, vom returna adresele IP asociate unui nume de domeniu. Adesea, mai multe adrese IP sunt asociate cu un singur nume de domeniu. Acest lucru se întâmplă adesea dacă se utilizează echilibrarea sarcinii, de exemplu.
Folosim opțiunea de interogare +short
, așa cum se arată mai jos, care ne oferă un răspuns concis:
dig howtogeek.com +scurt
Toate adresele IP asociate domeniului howtogeek.com sunt listate pentru noi. La celălalt capăt al spectrului, dacă nu folosim opțiunea de interogare +short
, rezultatul este destul de pronunțat.
Așadar, tastăm următoarele pentru a trece less
:
sapă howtogeek.com | Mai puțin
Ieșirea este afișată în less
, așa cum se arată mai jos.
Iată lista completă:
; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> howtogeek.com ;; opțiuni globale: +cmd ;; Am răspuns: ;; ->>HEADER<<- opcode: QUERY, stare: NOERROR, id: 12017 ;; steaguri: qr rd ra; ÎNTREBARE: 1, RĂSPUNS: 4, AUTORITATE: 0, SUPLIMENTARE: 1 ;; PSEUDOSECȚIE OPT: ; EDNS: versiunea: 0, steaguri:; udp: 65494 ;; SECȚIUNEA DE ÎNTREBĂRI: ;howtogeek.com. ÎN A ;; SECȚIUNEA RĂSPUNSURI: howtogeek.com. 3551 IN A 151.101.194.217 howtogeek.com. 3551 IN A 151.101.130.217 howtogeek.com. 3551 IN A 151.101.66.217 howtogeek.com. 3551 IN A 151.101.2.217 ;; Timp de interogare: 0 ms ;; SERVER: 127.0.0.53#53(127.0.0.53) ;; CÂND: Duminică, 22 martie, 07:44:37 EDT 2020 ;; MSG SIZE rcvd: 106
Să disecăm acea bucată cu bucată.
Antet
Mai întâi, să aruncăm o privire la ceea ce avem în antet:
; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> howtogeek.com ;; opțiuni globale: +cmd ;; Am răspuns: ;; ->>HEADER<<- opcode: QUERY, stare: NOERROR, id: 12017 ;; steaguri: qr rd ra; ÎNTREBARE: 1, RĂSPUNS: 4, AUTORITATE: 0, SUPLIMENTARE: 1
Acum, iată ce înseamnă toate acestea:
- Prima linie: versiunea de
dig
și domeniul care a fost interogat. - Opțiuni globale: după cum vom vedea, puteți utiliza
dig
pentru a interoga mai multe domenii simultan. Această linie arată opțiunile care au fost aplicate tuturor interogărilor de domeniu. În exemplul nostru simplu, a fost doar opțiunea implicită+cmd
(comandă). - Opcode: Query: Acesta este tipul de operație care a fost solicitată, care, în acest caz, a fost o
query
. Această valoare poate fi, de asemenea, oiquery
inversă sau ostatus
dacă doar testați starea sistemului DNS. - Stare: Nicio eroare: Nu au existat erori și solicitarea a fost rezolvată corect.
- ID: 12017 : Acest ID aleatoriu leagă cererea și răspunsul.
- Indicatori: qr rd ra: Acestea reprezintă
query
,recursion desired
șirecursion available
. Recursiunea este o formă de căutare DNS (cealaltă este iterativă). De asemenea, s-ar putea să vedețiAA
, care înseamnă Authoritative Answer, adică un Authoritative Name Server a furnizat răspunsul. - Interogare: 1: numărul de interogări din această sesiune, care a fost unul.
- Răspuns: 4: numărul de răspunsuri din acest răspuns, care este patru.
- Autoritate: 0: numărul de răspunsuri care au venit de la un server de nume autorizat, care a fost zero în acest caz. Răspunsul a fost returnat din memoria cache a unui server precursor DNS. Nu va exista o secțiune autorizată în răspuns.
- Adițional: 1: Există o informație suplimentară. (În mod ciudat, nimic nu este listat decât dacă această valoare este două sau mai mare.)
Optează Pseudosecția
În continuare, vedem următoarele în Pseudosecția Opt:
;; PSEUDOSECȚIE OPT: ; EDNS: versiunea: 0, steaguri:; udp: 65494
Să descompunem asta:
- EDNS: versiunea 0: versiunea sistemului de extensie pentru DNS care este utilizată. EDNS transmite date extinse și steaguri prin extinderea dimensiunii pachetelor UDP (User Datagram Protocol). Acest lucru este indicat de un steag de dimensiune variabilă.
- steaguri: Nu sunt utilizate steaguri.
- udp : 4096: dimensiunea pachetului UDP.
Secțiunea de întrebări
În secțiunea Întrebări, vedem următoarele:
;; SECȚIUNEA DE ÎNTREBĂRI: ;howtogeek.com. ÎN A
Iată ce înseamnă asta:
- howtogeek.com: numele de domeniu pe care îl interogăm.
- IN: Facem o interogare de clasă de internet.
- R: Dacă nu specificăm altfel,
dig
va solicita o înregistrare A (adresă) de la serverul DNS.
Secțiunea de răspunsuri
Secțiunea Răspuns conține următoarele patru răspunsuri pe care le-am primit de la serverul DNS:
howtogeek.com. 3551 IN A 151.101.194.217 howtogeek.com. 3551 IN A 151.101.130.217 howtogeek.com. 3551 IN A 151.101.66.217 howtogeek.com. 3551 IN A 151.101.2.217
Iată ce înseamnă aceste răspunsuri:
- 3551: Acesta este Time to Live (TTL), un întreg semnat pe 32 de biți care deține intervalul de timp pentru care o înregistrare poate fi stocată în cache. Când expiră, datele trebuie utilizate într-un răspuns la o solicitare până când sunt reîmprospătate de serverul DNS.
- IN: Am făcut o interogare de clasă de Internet.
- R: Am cerut o înregistrare A de la serverul DNS.
Sectiunea Statistici
Statisticile este secțiunea finală și conține următoarele informații:
;; Timp de interogare: 0 ms ;; SERVER: 127.0.0.53#53(127.0.0.53) ;; CÂND: Duminică, 22 martie, 07:44:37 EDT 2020 ;; MSG SIZE rcvd: 106
Iată ce avem:
- Timp de interogare: 0 ms: Timpul necesar pentru a primi răspunsul.
- SERVER: 127.0.0.53#53(127.0.0.53): Adresa IP și numărul portului serverului DNS care a răspuns. În acest caz, indică soluția locală de stocare în cache. Aceasta redirecționează cererile DNS către oricare dintre serverele DNS din amonte sunt configurate. Pe computerul de testare Manajro, adresa listată aici era 8.8.8.8#53, care este serviciul DNS public al Google.
- CÂND: Duminică, 22 mar 07:44:37 EDT 2020: Când a fost făcută cererea.
- MSG SIZE rcvd: 106: Dimensiunea mesajului primit de la serverul DNS.
Fiind selectiv
Nu trebuie să vă mulțumiți cu cele două extreme: buzele strânse și vorbele. Comanda dig
vă permite să includeți sau să excludeți selectiv secțiuni din rezultate.
Următoarele opțiuni de interogare vor elimina acea secțiune din rezultate:
- +nocomments: Nu afișa linii de comentarii.
- +noauthority: Nu afișați secțiunea de autoritate.
- +noadditional: Nu afișați secțiunea suplimentară.
- +nostats: nu afișați secțiunea de statistici.
- +noanswer: Nu afișa secțiunea de răspuns.
- +noall: Nu arăta nimic!
Opțiunea de interogare +noall
este de obicei combinată cu una dintre cele de mai sus pentru a include o secțiune în rezultate. Deci, în loc să tastați un șir lung de opțiuni de interogare pentru a dezactiva mai multe secțiuni, puteți folosi +noall
pentru a le dezactiva pe toate.
Puteți folosi apoi următoarele opțiuni de interogare inclusiv pentru a le reactiva pe cele pe care doriți să le vedeți:
- +comments: Afișează rândurile de comentarii.
- +authority: Afișează secțiunea de autoritate.
- +additional: Afișați secțiunea suplimentară.
- +statistici: arată secțiunea statistici.
- +răspuns: Afișează secțiunea de răspuns.
- +all: Arată totul.
Introducem următoarele pentru a face o solicitare și pentru a exclude rândurile de comentarii:
dig howtogeek.com +nocomments
Dacă folosim opțiunea de interogare +noall
pe cont propriu, așa cum se arată mai jos, nu vom obține niciun rezultat util:
dig howtogeek.com +noall
Putem adăuga selectiv secțiunile pe care vrem să le vedem. Pentru a adăuga secțiunea de răspuns, introducem următoarele:
dig howtogeek.com +noall +answer
Dacă introducem următoarele pentru a activa +stats
, vom vedea și secțiunea de statistici:
dig howtogeek.com +noall +answer statistics
+noall +answer
este folosită des. Puteți adăuga alte secțiuni la linia de comandă după cum este necesar. Dacă doriți să evitați să tastați +noall +answer
pe linia de comandă de fiecare dată când utilizați dig
, le puteți pune într-un fișier de configurare numit „.digrc”. Se află în directorul dvs. de acasă.
Introducem următoarele pentru a crea unul cu echo
:
echo "+noall +answer" > $HOME/.digrc
Putem apoi să tastam următoarele pentru a-i verifica conținutul:
cat .digrc
Aceste două opțiuni vor fi acum aplicate tuturor utilizărilor viitoare ale dig
, după cum se arată mai jos:
sapă ubuntu.org
dig linux.org
sapă github.com
Acest fișier de configurare dig
va fi utilizat pentru exemplele rămase din acest articol.
Înregistrări DNS
Informațiile returnate la solicitările dvs. de dig
sunt extrase din diferite tipuri de înregistrări deținute pe serverul DNS. Dacă nu cerem ceva diferit, dig
interogări în înregistrarea A (adresă). Următoarele sunt tipurile de înregistrări utilizate în mod obișnuit cu dig
:
- O înregistrare: conectează domeniul la o adresă IP versiunea 4.
- Înregistrare MX: Schimbul de e-mail înregistrează e-mailurile directe trimise către domenii către serverul de e-mail corect.
- Înregistrare NS: înregistrările serverului de nume deleg un domeniu (sau subdomeniu) unui set de servere DNS.
- Înregistrare TXT: Înregistrările text stochează informații bazate pe text cu privire la domeniu. De obicei, acestea pot fi folosite pentru a suprima e-mailurile falsificate sau falsificate.
- Înregistrare SOA: Începutul înregistrărilor de autoritate poate deține o mulțime de informații despre domeniu. Aici, puteți găsi serverul de nume principal, partea responsabilă, un marcaj de timp pentru modificări, frecvența reîmprospătărilor zonei și o serie de limite de timp pentru reîncercări și abandonuri.
- TTL: Timpul de viață este o setare pentru fiecare înregistrare DNS care specifică cât timp unui server precursor DNS îi este permis să memoreze în cache fiecare interogare DNS. La expirarea acestui timp, datele trebuie reîmprospătate pentru solicitările ulterioare.
- ANY: Acest lucru îi spune lui
dig
să returneze fiecare tip de înregistrare DNS pe care o poate.
Specificarea tipului de înregistrare A nu schimbă acțiunea implicită, care este de a interoga înregistrarea adresei și de a obține adresa IP, după cum se arată mai jos:
dig redhat.com A
Pentru a interoga înregistrările schimbului de e-mail, folosim următorul steag MX:
sapă yahoo.com MX
Steagul serverului de nume returnează următorul nume al serverelor de nume rădăcină asociate domeniului de nivel superior:
dig fedora.com NS
Pentru a interoga începutul înregistrării de autoritate, introducem următorul semnal SOA:
dig manjaro.com SOA
Steagul TTL ne va arăta timpul de viață pentru datele din memoria cache a serverului DNS. Dacă facem o serie de solicitări, vedem că timpul de viață se reduce la nimic, iar apoi revenim la valoarea sa de pornire.
Introducem următoarele:
dig usa.gov TTL
Pentru a vedea înregistrările text, introducem steag-ul TX:
dig usa.gov TXT
Specificarea serverului DNS
Dacă doriți să utilizați un anumit server DNS pentru cererea dvs., puteți utiliza semnul la ( @
) pentru a-l transmite pentru a dig
ca parametru de linie de comandă.
Cu serverul DNS implicit (a se vedea mai jos), dig
referințe soluția locală de stocare în cache la 127.0.0.53.
dig usa.gov +stats
Acum, introducem următoarele pentru a folosi serverul DNS public Google la 8.8.8.8:
dig @8.8.8.8 usa.gov +stats
Utilizarea dig cu mai multe domenii
Putem trece mai multe domenii de dig
pe linia de comandă, după cum se arată mai jos:
dig ubuntu.org fedora.org manjaro.com
Dacă verificați în mod regulat un set de domenii, le puteți stoca într-un fișier text și le puteți transmite la dig
. Toate domeniile din fișier vor fi verificate pe rând.
Fișierul nostru se numește „domains.txt”. Vom folosi cat
pentru a-și arăta conținutul, apoi îl vom trece pentru a dig
cu opțiunea -f
(fișier). Introducem următoarele:
domenii cat.txt
dig -f domenii.txt
Căutări inverse DNS
Dacă aveți o adresă IP și doriți să știți unde se duce, puteți încerca o căutare inversă DNS. Dacă se rezolvă la un server înregistrat la un server DNS, s-ar putea să-i puteți afla domeniul.
Dacă poți depinde de prezența unui PTR (înregistrare pointer). PTR-urile rezolvă o adresă IP într-un nume de domeniu complet calificat. Cu toate acestea, deoarece acestea nu sunt obligatorii, nu sunt întotdeauna prezente pe un domeniu.
Să vedem dacă putem afla unde ne duce adresa IP 209.51.188.148. Introducem următoarele, folosind opțiunea -x
(căutare inversă):
dig -x 209.51.188.148
Presto! Adresa IP se rezolvă la gnu.org.
Deoarece un PTR este o înregistrare DNS și știm că dig
poate solicita înregistrări DNS specificate, nu am putea să-i cerem doar lui dig
să recupereze PTR-ul pentru noi? Da, putem, dar este nevoie de ceva mai multă muncă.
Trebuie să furnizăm adresa IP în ordine inversă și să .in-addr.arpa
la sfârșit, așa cum se arată mai jos:
dig ptr 148.188.51.209.in-addr.arpa
Obținem același rezultat; a fost nevoie doar de un pic mai mult efort.
Poți să-l sapi?
Cu toții folosim internetul zilnic, iar mințile curioase s-au întrebat adesea cum se întâmplă magia când introducem numele unui site web într-un browser. Cu dig
, puteți explora procesele de conjurare a rețelei.
Comenzi Linux | ||
Fișiere | tar · pv · cat · tac · chmod · grep · diff · sed · ar · om · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · tip · redenumire · zip · dezarhivare · montare · demontare · instalare · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm | |
Procese | alias · ecran · sus · frumos · renice · progres · strace · systemd · tmux · chsh · istoric · la · lot · gratuit · care · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · da · kill · sleep · sudo · su · time · groupadd · usermod · grupuri · lshw · shutdown · repornire · stop · poweroff · passwd · lscpu · crontab · data · bg · fg | |
Rețele | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
LEGATE: Cele mai bune laptopuri Linux pentru dezvoltatori și entuziaști