GNU/Linux >> Linux Esercitazione >  >> Linux

Forza dig a risolversi senza usare la cache

Soluzione 1:

Puoi usare il @ sintassi per cercare il dominio da un particolare server. Se il server DNS è autorevole per quel dominio, la risposta non sarà un risultato memorizzato nella cache.

dig @ns1.example.com example.com

Puoi trovare i server autorevoli chiedendo il NS record per un dominio:

dig example.com NS

Soluzione 2:

Non esiste alcun meccanismo nel protocollo DNS per forzare un server dei nomi a rispondere senza utilizzare la sua cache. Dig in sé non è un server dei nomi, è semplicemente uno strumento che passa la tua query a qualsiasi server dei nomi che hai configurato, utilizzando richieste DNS standard. DNS fa includi un modo per dire a un server di non usare la ricorsione, ma questo non è quello che vuoi. Questo è utile solo quando vuoi interrogare direttamente un nameserver autorevole.

Se volessi impedire a un server dei nomi di rispondere dalla sua cache, potresti farlo solo modificando la configurazione sul server dei nomi , ma se non controlli il nameserver, questo è impossibile.

Puoi, tuttavia, usare dig per bypassare i nameserver configurati ed eseguire la propria richiesta ricorsiva che risale ai root server. Per fare questo, usa il +trace opzione.

dig example.com +trace

In pratica, poiché questo interrogherà solo i server autorevoli piuttosto che il tuo risolutore di cache locale, il risultato non sarà obsoleto anche se quei server utilizzano la cache interna. Il vantaggio aggiuntivo dell'utilizzo di +trace è che puoi vedere tutte le richieste separate fatte lungo il percorso.

Soluzione 3:

Qualcosa di importante da notare qui, che noto che molte persone non includono mai quando parlano di +trace è quello che usa +trace significa che il client dig eseguirà la traccia, non il server DNS specificato nella tua configurazione (/etc/resolv.conf). Quindi, in altre parole, il tuo client dig funzionerà come farebbe un server DNS ricorsivo, se lo chiedi. Ma, cosa importante, non hai una cache.

Maggiori dettagli - quindi se hai già chiesto un mx registra utilizzando dig -t mx example.com e il tuo /etc/resolv.conf è 8.8.8.8 quindi fare qualsiasi cosa all'interno del TTL della zona restituirà il risultato memorizzato nella cache. In un certo senso, se stai cercando qualcosa sulla tua zona e su come Google la vede, hai in qualche modo avvelenato i tuoi risultati DNS con Google per il TTL della tua zona. Non male se hai un TTL breve, un po' spazzatura se ne hai uno di 1 ora.

Quindi, mentre +trace ti aiuterà a vedere cosa VEDREBBE essere visto se lo chiedessi a Google per la PRIMA volta e non avesse voci memorizzate nella cache, potrebbe darti la falsa idea che Google dirà a tutti la stessa cosa di ciò che il tuo +trace risultato è stato, cosa che non accadrà se l'hai chiesto in precedenza e hai un TTL lungo, poiché lo servirà dalla cache fino alla scadenza del TTL - ALLORA servirà come il tuo +trace rivelato.

Non posso avere troppi dettagli IMO.

Soluzione 4:

Questa bash scaverà le voci DNS di example.com dal suo primo server dei nomi elencato:

dig @$(dig @8.8.8.8 example.com ns +short | head -n1) example.com ANY +noall +answer
  • L'inner dig interroga il DNS di Google (8.8.8.8) per ottenere i server dei nomi di example.com.
  • Il dig esterno interroga il primo server dei nomi di example.com.

Ecco lo stesso di un alias per un .zshrc (e probabilmente .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; }

Ecco l'output per /.:

☀  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

Questa soluzione è abbastanza complicata da essere poco pratica da ricordare, ma abbastanza semplice da non risolvere il problema. dig non è la mia specialità - miglioramenti ben accetti :-)


Linux
  1. Come forzare cp a sovrascrivere senza conferma

  2. Calcolo della percentuale arrotondata in Shell Script senza utilizzare bc

  3. Ripristino di ~/.bashrc senza utilizzare i comandi bash

  4. Forza dd a non memorizzare nella cache o a non leggere dalla cache

  5. Come rimuovere un file senza usare rm?

Come passare automaticamente a una directory senza utilizzare il comando Cd in Linux

Diversi modi per elencare i contenuti della directory senza utilizzare il comando ls

Come bloccare gli attacchi di forza bruta SSH usando SSHGUARD

Come scaricare i pacchetti usando APT senza installarli

Utilizzo di W3 Total Cache sui siti cloud

Spiegazione del comando Dig in Linux