GNU/Linux >> Znalost Linux >  >> Linux

Vynutit dig k vyřešení bez použití mezipaměti

Řešení 1:

Můžete použít @ syntaxe pro vyhledání domény z konkrétního serveru. Pokud je server DNS autoritativní pro danou doménu, odpověď nebude výsledkem uloženým v mezipaměti.

dig @ns1.example.com example.com

Autoritativní servery můžete najít dotazem na NS záznamy pro doménu:

dig example.com NS

Řešení 2:

V protokolu DNS neexistuje žádný mechanismus, který by přinutil jmenný server reagovat bez použití jeho mezipaměti. Dig sám o sobě není jmenný server, je to jednoduše nástroj, který předá váš dotaz jakémukoli jmennému serveru, který jste nakonfigurovali, pomocí standardních požadavků DNS. DNS dělá zahrnout způsob, jak říct serveru, aby nepoužíval rekurzi, ale to není to, co chcete. To je užitečné pouze tehdy, když se chcete přímo dotazovat na autoritativní jmenný server.

Pokud byste chtěli jmennému serveru zabránit v odpovědi z jeho mezipaměti, bylo by to možné provést pouze změnou konfigurace na jmenném serveru , ale pokud neovládáte jmenný server, je to nemožné.

Můžete se však dostat k obejití nakonfigurované jmenné servery a provést svůj vlastní rekurzivní požadavek, který se vrátí ke kořenovým serverům. Chcete-li to provést, použijte +trace možnost.

dig example.com +trace

V praxi, protože to bude dotazovat pouze autoritativní servery, nikoli váš místní překladač mezipaměti, výsledek nebude zastaralý, i když tyto servery používají interní mezipaměť. Další výhodou použití +trace je, že uvidíte všechny jednotlivé požadavky provedené na cestě.

Řešení 3:

Zde je třeba poznamenat něco důležitého, co si všimnu, že mnoho lidí nikdy nezahrnuje, když mluví o +trace je to pomocí +trace znamená, že trasování provede dig klient, nikoli DNS server zadaný ve vaší konfiguraci (/etc/resolv.conf). Jinými slovy, váš dig klient bude fungovat jako rekurzivní server DNS, pokud se ho zeptáte. Ale - co je důležité, nemáte mezipaměť.

Více podrobností – pokud jste již požádali o mx zaznamenejte pomocí dig -t mx example.com a váš /etc/resolv.conf je 8.8.8.8, pak když uděláte cokoli uvnitř TTL zóny, vrátí výsledek uložený v mezipaměti. Svým způsobem, pokud hledáte něco o své vlastní zóně a o tom, jak ji vidí Google, trochu jste otrávili výsledky DNS pomocí Googlu pro TTL vaší zóny. Není to špatné, pokud máte krátké TTL, poněkud nesmyslné, pokud máte 1h.

Takže zatímco +trace vám pomůže zjistit, co BY BYLO vidět, kdybyste se poprvé zeptali Googlu a neměl žádný záznam v mezipaměti, může vám to poskytnout mylnou představu, že Google bude všem říkat totéž, co váš +trace výsledek byl, což nebude, pokud jste se zeptali dříve a máte dlouhé TTL, protože to bude sloužit z mezipaměti, dokud nevyprší TTL - PAK bude sloužit stejně jako vaše +trace odhaleno.

IMO nemůže mít příliš mnoho podrobností.

Řešení 4:

Tento bash získá záznamy DNS example.com z jeho prvního jmenného serveru:

dig @$(dig @8.8.8.8 example.com ns +short | head -n1) example.com ANY +noall +answer
  • Internal dig se dotazuje na DNS společnosti Google (8.8.8.8), aby získal jmenné servery example.com.
  • Vnější dig se dotazuje na křestní jmenný server example.com.

Zde je totéž jako alias pro .zshrc (a pravděpodobně .bashrc):

# e.g. `checkdns google.com`
checkdns () { dig @$(dig @8.8.8.8 $1 ns +short | head -n1) $1 ANY +noall +answer; ping -c1 $1; }

Zde je výstup pro /.:

☀  checkdns slashdot.org                                                                                                dev
-->Server DNS Query

; <<>> DiG 9.10.3-P4-Ubuntu <<>> @ns1.dnsmadeeasy.com. slashdot.org ANY +noall +answer
; (2 servers found)
;; global options: +cmd
slashdot.org.       21600   IN  SOA ns0.dnsmadeeasy.com. hostmaster.slashdotmedia.com. 2016045603 14400 600 604800 300
slashdot.org.       86400   IN  NS  ns3.dnsmadeeasy.com.
slashdot.org.       86400   IN  NS  ns4.dnsmadeeasy.com.
slashdot.org.       86400   IN  NS  ns0.dnsmadeeasy.com.
slashdot.org.       86400   IN  NS  ns2.dnsmadeeasy.com.
slashdot.org.       86400   IN  NS  ns1.dnsmadeeasy.com.
slashdot.org.       3600    IN  MX  10 mx.sourceforge.net.
slashdot.org.       3600    IN  TXT "google-site-verification=mwj5KfwLNG8eetH4m5w1VEUAzUlHotrNwnprxNQN5Io"
slashdot.org.       3600    IN  TXT "v=spf1 include:servers.mcsv.net ip4:216.34.181.51 ?all"
slashdot.org.       300 IN  A   216.34.181.45
-->Local DNS Query
PING slashdot.org (216.34.181.45) 56(84) bytes of data.
64 bytes from slashdot.org (216.34.181.45): icmp_seq=1 ttl=242 time=33.0 ms

--- slashdot.org ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 33.026/33.026/33.026/0.000 ms

Toto řešení je dostatečně složité na to, aby bylo nepraktické na zapamatování, ale dostatečně jednoduché na to, aby se problém nevyřešil. dig není moje specialita - vylepšení vítána :-)


Linux
  1. Použití síly na příkazovém řádku Linuxu

  2. Jak donutit cp k přepsání bez potvrzení

  3. Použití vim k vynucení úprav souboru při otevření bez oprávnění

  1. Jak vynutit přepsání příkazu cp bez potvrzení

  2. Obnovte částečně stažený soubor pomocí Wget v Linuxu

  3. Použití příznaku archivu rsync bez kopírování symbolických odkazů

  1. Jak odstranit předponu slova pomocí grep?

  2. Výpočet zaokrouhlených procent v Shell Script bez použití bc

  3. Pomocí 'najít' vrátíte názvy souborů bez přípony