2022-01-06 05:59 Doba čtení: 15 min

Jak používat příkaz dig na Linuxu

Pojďme se krok za krokem podívat na to, co nám příkaz dig vrací.

Základní výstup příkazu dig může vypadat například takto:

DiG 9.11.3-1ubuntu1.11-Ubuntu > wdzwdz.com ;; globální možnosti: +cmd ;; Dostal odpověď: ;; ->>HEADER

Nyní si rozebereme jednotlivé části tohoto výstupu:

První řádek: Zobrazuje verzi nástroje dig a doménu, na kterou se dotazujeme.

Globální možnosti: Příkaz dig umožňuje dotazovat se na více domén najednou. Tento řádek ukazuje, jaké možnosti byly použity pro všechny dotazy. V tomto případě byla použita pouze výchozí možnost +cmd (příkaz).

Opcode: Query: Toto definuje typ požadované akce. V tomto případě šlo o standardní dotaz (query). Může se zde objevit také iquery pro inverzní dotaz nebo status pro kontrolu stavu DNS systému.

Stav: Bez chyb: Informuje o tom, že nedošlo k žádné chybě a požadavek byl úspěšně zpracován.

ID: 12017: Jedná se o náhodné ID, které spojuje dotaz s jeho odpovědí.

Příznaky: qr rd ra: Znamenají dotaz (qr), požadovanou rekurzi (rd) a dostupnou rekurzi (ra). Rekurze je jeden ze způsobů vyhledávání DNS (druhý je iterativní). Můžete se zde setkat i s AA, což značí autoritativní odpověď, která pochází z autoritativního jmenného serveru.

Dotaz: 1: Udává počet dotazů v této relaci, v tomto případě jeden.

Odpověď: 4: Označuje počet odpovědí v této odpovědi, což jsou čtyři.

Autorita: 0: Ukazuje počet odpovědí, které pocházejí z autoritativního jmenného serveru, v tomto případě žádná. Odpověď byla získána z cache prekurzorového DNS serveru. V odpovědi tak neuvidíme žádnou autoritativní sekci.

Dodatečné: 1: Zobrazuje počet doplňujících informací. Je zajímavé, že nic se nezobrazí, pokud je tato hodnota menší než 2.

Opt Pseudosekce

V sekci Opt Pseudosekce se setkáváme s následujícím:

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

Rozklíčujme si i tuto část:

EDNS: verze 0: Zde se dozvíme, jaká verze rozšíření pro DNS se používá. EDNS umožňuje přenos rozšířených dat a příznaků zvětšením UDP paketů. Je to indikováno proměnnou velikostí příznaku.

příznaky: V tomto případě se nepoužívají žádné další příznaky.

udp: 4096: Udává velikost UDP paketu.

Sekce otázek

Sekce otázek (QUESTION SECTION) nám ukazuje:

;; QUESTION SECTION:
;wdzwdz.com. IN A

A toto si můžeme vysvětlit takto:

wdzwdz.com: Je doménové jméno, na které se ptáme.

IN: Značí, že jde o dotaz na internetovou třídu.

A: Pokud není specifikováno jinak, dig se dotazuje na záznam typu A (adresa) z DNS serveru.

Sekce odpovědí

V sekci Odpovědí se nacházejí čtyři záznamy, které jsme obdrželi od DNS serveru:

wdzwdz.com. 3551 IN A 151.101.194.217
wdzwdz.com. 3551 IN A 151.101.130.217
wdzwdz.com. 3551 IN A 151.101.66.217
wdzwdz.com. 3551 IN A 151.101.2.217

Tyto odpovědi znamenají:

3551: Toto je Time to Live (TTL), 32bitové celé číslo s rozsahem, které udává časový interval, po který mohou být data uložena v cache. Po vypršení platnosti musí být data pro nový dotaz získána z DNS serveru.

IN: Značí, že dotaz byl na internetovou třídu.

A: Žádali jsme o záznam typu A z DNS serveru.

Sekce statistik

Poslední sekcí je statistika (STATISTICS SECTION), kde vidíme následující:

;; 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

A její popis je následující:

Doba dotazu: 0 ms: Čas potřebný k získání odpovědi od serveru DNS.

SERVER: 127.0.0.53#53(127.0.0.53): IP adresa a port DNS serveru, který nám odpověděl. V tomto případě je zde uveden místní stub resolver, který funguje jako cache. Ten přesměrovává DNS dotazy na nakonfigurovaný upstream DNS server. Na testovacím počítači Manajro, se zde zobrazila adresa 8.8.8.8#53, což je veřejná služba DNS od společnosti Google.

KDY: Zobrazuje čas, kdy byl dotaz proveden.

MSG SIZE rcvd: 106: Udává velikost zprávy přijaté ze serveru DNS.

Možnosti selektivního zobrazení

Příkaz dig umožňuje selektivně zobrazovat nebo skrývat určité sekce výstupu. Nejsme tak odkázáni jen na výchozí "upovídaný" formát.

Následující parametry odstraní dané sekce z výstupu:

  • +nocomments: Nezobrazí řádky s komentáři.
  • +noauthority: Nezobrazí sekci s autoritativními informacemi.
  • +noadditional: Nezobrazí dodatečnou sekci.
  • +nostats: Nezobrazí statistickou sekci.
  • +noanswer: Nezobrazí sekci odpovědí.
  • +noall: Skryje všechny sekce.

Parametr +noall se běžně používá v kombinaci s jinými parametry pro zobrazení pouze vybraných sekcí. Místo dlouhého výčtu parametrů pro skrytí více sekcí, můžeme použít +noall pro skrytí všeho a následně povolit zobrazení jen požadovaných částí.

K opětovnému zobrazení skrytých sekcí, můžeme použít:

  • +comments: Zobrazí řádky s komentáři.
  • +authority: Zobrazí autoritativní sekci.
  • +additional: Zobrazí dodatečnou sekci.
  • +stats: Zobrazí statistickou sekci.
  • +answer: Zobrazí sekci s odpovědí.
  • +all: Zobrazí všechny sekce.

Pro dotaz bez komentářů, zadáme:

dig wdzwdz.com +nocomments

Pokud použijeme samotný +noall, tak nedostaneme žádný výstup:

dig wdzwdz.com +noall

Můžeme tak selektivně přidávat sekce, které nás zajímají. Pro zobrazení pouze sekce odpovědí, zadáme:

dig wdzwdz.com +noall +answer

Pokud chceme přidat i statistiky, tak použijeme následující příkaz:

dig wdzwdz.com +noall +answer +stats

Častou kombinací je použití +noall +answer. Dle potřeby lze přidávat další sekce na příkazové řádce. Abyste nemuseli psát +noall +answer při každém použití dig, můžete tyto parametry vložit do konfiguračního souboru .digrc, který se nachází ve vašem domovském adresáři.

Pro vytvoření souboru s obsahem +noall +answer, použijeme:

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

Následně můžeme ověřit jeho obsah pomocí:

cat .digrc

Tyto parametry se od teď budou aplikovat na všechny budoucí příkazy dig:

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

Tento konfigurační soubor budeme používat pro zbylé příklady v tomto článku.

DNS záznamy

Informace, které dig vrací, pocházejí z různých typů záznamů, které jsou uloženy na DNS serveru. Pokud nezadáme nic jiného, tak hledáme záznam typu A (adresa). Níže uvádíme typy záznamů, které se s příkazem dig nejčastěji používají:

  • A záznam: Spojuje doménu s IP adresou verze 4.
  • MX záznam: Směruje e-maily zaslané na doménu na správný poštovní server.
  • NS záznam: Deleguje doménu (nebo subdoménu) na sadu DNS serverů.
  • TXT záznam: Ukládá textové informace týkající se domény. Používá se například k ověření odesílatele emailů.
  • SOA záznam: Začátek autoritativního záznamu, který může obsahovat mnoho informací o doméně, například primární jmenný server, odpovědnou stranu, časové razítko pro změny, frekvenci obnovování zóny a časové limity pro opakování a opuštění.
  • TTL: Time to live, udává, jak dlouho může prekurzorový DNS server uchovávat daný záznam v cache. Jakmile tento čas vyprší, musí být data obnovena.
  • ANY: Říká dig, aby vrátil všechny typy DNS záznamů.

Zadáním typu záznamu A se nezmění výchozí chování příkazu, který získá IP adresu pro danou doménu:

dig redhat.com A

Pro získání záznamů typu MX použijeme parametr MX:

dig yahoo.com MX

Parametr NS nám vrátí jména kořenových názvových serverů pro doménu nejvyšší úrovně:

dig fedora.com NS

Pro dotaz na SOA záznam, použijeme parametr SOA:

dig manjaro.com SOA

Parametr TTL nám ukáže, jak dlouho jsou data v cache. Pokud budeme dělat opakované dotazy, tak vidíme, že se hodnota zmenšuje až na nulu, a pak se vrátí do původní hodnoty.

Použijeme následující příkaz:

dig usa.gov TTL

Pro získání textových záznamů použijeme parametr TXT:

dig usa.gov TXT

Volba DNS serveru

Pokud chcete pro dotaz použít konkrétní DNS server, tak ho můžete zadat jako parametr s pomocí zavináče (@).

S výchozím DNS serverem se dig dotazuje na lokální překladač, který nepoužívá cache a je umístěn na 127.0.0.53:

dig usa.gov +stats

Nyní použijeme veřejný DNS server od Google na adrese 8.8.8.8:

dig @8.8.8.8 usa.gov +stats

Použití dig s více doménami

Příkaz dig umožňuje dotazovat se na více domén najednou:

dig ubuntu.org fedora.org manjaro.com

Pokud pravidelně ověřujete sadu domén, tak si je můžete uložit do textového souboru a použít s příkazem dig. Příkaz pak postupně zkontroluje všechny domény z tohoto souboru.

Soubor se jmenuje domains.txt. Použijeme cat pro zobrazení jeho obsahu a poté ho předáme dig pomocí parametru -f:

cat domains.txt
dig -f domains.txt

Reverzní DNS vyhledávání

Pokud máte IP adresu a chcete zjistit, na jakou doménu vede, tak můžete vyzkoušet reverzní DNS vyhledávání. Pokud je IP adresa registrována u DNS serveru, tak můžete zjistit doménu, která k ní patří.

Zda je reverzní vyhledávání úspěšné záleží na přítomnosti PTR záznamu. PTR záznam převádí IP adresu na plně kvalifikované doménové jméno. Tyto záznamy ovšem nejsou povinné a nemusí být vždy dostupné.

Zkusme zjistit, kam nás zavede IP adresa 209.51.188.148. Použijeme k tomu parametr -x:

dig -x 209.51.188.148

Zjistili jsme, že IP adresa patří doméně gnu.org.

Protože PTR je DNS záznam, tak bychom se na něj mohli zeptat i přímo s pomocí dig. Ano, můžeme, ale bude to vyžadovat trošku více práce.

Musíme zadat IP adresu v obráceném pořadí a na konec přidat .in-addr.arpa, jak je ukázáno níže:

dig ptr 148.188.51.209.in-addr.arpa

Dostaneme stejný výsledek, ale s větším úsilím.

Můžete to prověřit sami?

Všichni používáme internet každý den a zvídavé mysli se často zamýšlí nad tím, jak se stane kouzlo, když do prohlížeče zadáme název webové stránky. S pomocí dig můžete prozkoumat síťové procesy, které se skrývají v pozadí.

Tomáš Dvořák
Autor
Czechia

Píše o bezpečnosti, webu a chytrých službách s důrazem na srozumitelnost.

Předchozí článek
Jak si vytvořit vlastní synchronizaci cloudových souborů s Nextcloud
Další článek
Změňte výchozí umístění pro ukládání snímků obrazovky ve Windows 10