Ricerche DNS inverse che rallentano le operazioni di rete su LAN


9

Ambiente

La mia configurazione LAN è piuttosto semplice:

  • Un router collegato al modem dell'ISP e a Internet
  • Il mio pc di sviluppo si è collegato direttamente al router

Il router fornisce DHCP ma non esegue il proprio server DNS. In effetti, sulla mia LAN non è presente alcun server DNS ospitato da nessuna parte (configurazione tipica della rete domestica). Il router è configurato per inviare i server DNS dell'ISP come parte delle informazioni sul lease DHCP.

Ho installato un computer VirtualBox sul mio PC di sviluppo e ho installato Debian Squeeze (6.0.4) su di esso. La modalità di rete VirtualBox è Bridged Adapterdi simulare un server autonomo sulla mia LAN. Essere un server VirtualBox anziché un server fisico non è davvero importante, ma lo cito per completezza.

Il problema

Ogni volta che un'operazione di rete esegue una ricerca inversa DNS di un IP LAN prima dell'esecuzione, il server presenta lunghi ritardi. Alcuni esempi di operazioni di rete lente:

  • Connessione SSH al server dal mio PC di sviluppo
  • Connessione alla porta di amministrazione del server Glassfish
  • netstat -l( netstat -nlè molto veloce)
  • Starting MTA: exim4 all'avvio richiede molto tempo per il completamento

Alcuni di questi hanno soluzioni alternative come l'aggiunta dell'iP del mio dev pc /etc/hostso l'aggiunta di un'opzione specifica del comando per evitare di effettuare ricerche inverse DNS. Ovviamente, l'utilizzo /etc/hostsva solo così lontano perché è in contrasto con DHCP.

Tuttavia, non posso fare a meno di pensare che mi manchi qualcosa. Devo davvero configurare un server DNS da qualche parte sulla mia LAN? Sembra uno sforzo enorme e inutile per le mie esigenze e non posso credere che non ci sia un'altra opzione in un ambiente DHCP come il mio.

Ho cercato molto in rete per questo e forse non ho i termini di ricerca giusti, ma non riesco a trovare la soluzione ...

aggiornamento 1 dopo la risposta di BillThor

Utilizzando l'host (dig fornisce gli stessi risultati):

# ip of stackoverflow.com
$ time host -v 64.34.119.12
Trying "12.119.34.64.in-addr.arpa"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15537
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;12.119.34.64.in-addr.arpa.     IN      PTR

;; ANSWER SECTION:
12.119.34.64.in-addr.arpa. 143  IN      PTR     stackoverflow.com.

Received 74 bytes from 192.168.1.1#53 in 15 ms

real    0m0.020s
user    0m0.008s
sys     0m0.000s

# ip of dev pc
$ time host -v 192.168.1.50
Trying "50.1.168.192.in-addr.arpa"
;; connection timed out; no servers could be reached

real    0m10.004s
user    0m0.004s
sys     0m0.000s

Il mio /etc/resolv.conf (è stato creato automaticamente durante l'installazione)

nameserver 192.168.1.1

Sia l'host che lo scavo ritornano molto velocemente per un IP pubblico ma impiegano 10 secondi per il timeout per un IP LAN. Immagino che 10s sia il mio valore di timeout attuale.

aggiornamento 2

Con il file dev-pcin / etc / hosts:

$ time getent hosts 192.168.1.50
192.168.1.50    dev-pc

real    0m0.001s
user    0m0.000s
sys     0m0.000s

Senza dev-pcnel file / etc / hosts:

$ time getent hosts 192.168.1.50

real    0m10.012s
user    0m0.004s
sys     0m0.000s

Sembra sempre più che dovrò trovare opzioni o parametri del programma a tratti per ognuno che cerca di fare ricerche DNS inverse! Nessuna delle macchine (virtuali o meno) può fungere da server DNS sulla mia LAN poiché non sono sempre attive. Sfortunatamente, il firmware del router non include un server DNS.

Risposte:


3

192.168.1.1 è l'indirizzo IP del tuo router?

nameserver 192.168.1.1 suggerisce che il tuo router stia pubblicizzando se stesso come un server DNS, piuttosto che "inviare i server DNS dell'ISP".

Che marca e modello di router hai? L'interfaccia Web mostra i messaggi di registro?

Mi chiedo se il tuo router stia inoltrando la richiesta ai nameserver del tuo ISP, ma i nameserver del tuo ISP stanno abbandonando la richiesta, perché non vogliono che tu sappia come 192.168.1.50si chiama la loro macchina con IP .

suggerimenti:

  • Controlla le impostazioni del tuo router. Dovrebbe rispondere alle richieste per la propria rete privata . Forse puoi aggiungere una voce host statica nell'interfaccia web del tuo router?
  • Prova a installare Avahi su tutti i sistemi della tua rete.
  • Di 'al tuo router di usare Google Public DNS ( 8.8.8.8e 8.8.4.4) o OpenDNS

Il mio router è un "Router NETGEAR WNR3500L" @ 192.168.1.1. I log mostrano solo i lease DHCP e gli accessi all'interfaccia di amministrazione. Hai ragione, il router invia 192.168.1.1 come server DNS quando gestisce i lease DHCP (confermato con Wireshark). Sull'interfaccia di amministrazione del router, sto usando "Ottieni automaticamente dall'ISP" per gli indirizzi DNS. L'altra opzione è specificare direttamente i server DNS per IP. Immagino che questo significhi che le richieste DNS vengono effettivamente inoltrate dal router.
Bernie,

Sì, immagino che stia inoltrando le richieste DNS. Cosa succede se lo si modifica per utilizzare Google Public DNS ( 8.8.8.8e 8.8.4.4) invece?
Mikel,

Wow, questo fa davvero una GRANDE differenza! Apparentemente questi server DNS (di Google e OpenDNS) falliscono rapidamente quando viene assegnato un indirizzo IP privato. Eseguirò qualche altro test, ma penso che questo risolva il mio problema!
Bernie,

Contrassegnando questo come risposta accettata. Le 3 risposte sono state utili, ma la modifica dei server DNS ha risolto il problema "in senso lato".
Bernie,

4

Le ricerche DNS non riuscite dovrebbero fallire rapidamente. Tuttavia, generalmente eseguo dnsmasq che leggerà il file hosts e servirà quelle voci per le ricerche avanti e indietro. Funge anche da server di cache DNS per ridurre il carico sui server DNS upstream.

È possibile che si desideri utilizzare il comando hosto digper vedere quali ricerche sono lente. Se vieni reindirizzato a un server DNS che non esegue DNS, impiegherà un po 'di tempo a fallire. È possibile ottimizzare i timeout e i tentativi /etc/resolv.confper accelerare gli errori.

EDIT: per testare la risposta del resolver provare a usare time getent hosts 192.168.1.50. Questo dovrebbe restituire ricerche dal tuo /etc/hostsfile e DNS. I comandi hoste digcontrollano solo DNS. Se questo ritorna ma richiede alcuni secondi, potresti voler cambiare l'ordine della hostsvoce nei /etc/nsswitch.conffile di spostamento in primo piano nell'elenco.

L'impostazione dnsmasqe l'utilizzo come nameserver DNS primario in /etc/resolve.confdovrebbe risolvere il problema se si dispone di programmi che si basano solo su DNS per la ricerca dei nomi. Exim dovrebbe usare il resolver per le ricerche di base. Sarà necessario un /etc/hostsfile, a meno che non sia possibile disabilitare il server DHCP sul router, è possibile utilizzarlo dnsmasqper DHCP. dnsmasqregistrerà automaticamente i nomi se vengono forniti nelle richieste DHCP che gestisce.

EDIT2: se nessuno dei tuoi computer è sempre attivo, potresti voler guardare l'installazione di samba e l'utilizzo winsnella configurazione di nsswitch. Dovrebbe essere veloce, quindi potrebbe funzionare se lo metti davanti dnsalla voce host.

È inoltre possibile esaminare l'installazione dei avahiprogrammi di utilità che consentiranno il rilevamento automatico su reti locali di collegamento. Ho funzionato sul lato IPv6, ma non pubblica indirizzi IPv4. Il dominio predefinito per gli host è '.local'. Questo potrebbe non essere adatto nel tuo caso, ma può essere ignorato. Sembra anche più lento eseguendo una ricerca che winsin modo da mettere mdnsdavanti dnsnella configurazione nsswitch potrebbe non essere adatto.


Penso che abbia detto che tutti (e solo) gli sguardi della LAN sono lenti e sta cercando di evitare del tutto un file host.
ckhan,

Dato che questo è solo un server di prova (e anche virtuale!), Non posso fare affidamento su di esso come server DHCP per l'intera LAN. Ci sono anche altri client wireless occasionali che hanno bisogno di un IP anche quando il mio PC di sviluppo, e quindi il server di test, non è in esecuzione.
Bernie,

Aggiornato di nuovo il mio post. Grazie per il tuo aiuto finora.
Bernie,

3

Se non si desidera eseguire la configurazione di un server DNS locale (e potenzialmente DHCP) per la propria rete domestica, è possibile indicare ai servizi, ove possibile, di non eseguire ricerche DNS inverse.

Ad esempio, per disabilitare la ricerca DNS inversa per SSHD, aggiungere quanto segue al sshd_configfile (o simile a seconda della distribuzione):

UseDNS no

Potresti rimuovere questa linea dalla configurazione di Exim, anche se non sono chiaro se questo avrà un impatto sulla velocità di avvio, impedirà la ricerca DNS inversa sui client di connessione:

host_lookup = *

Sembra che tu possa esportare questa variabile d'ambiente per l'utente che avvia il processo Glassfish:

export AS_NO_REVERSE_DNS=true


Vorrei poter installare un server DNS con l'attrezzatura reale che ho, ma non è davvero fattibile a meno che non carichi un firmware alternativo sul router. Grazie per le opzioni di configurazione; Non avevo scoperto l' AS_NO_REVERSE_DNSopzione per Glassfish, quindi darò un'occhiata.
Bernie,

1

Ha avuto lo stesso problema dopo il passaggio da IP dinamico a statico. La mia rete ora è configurata: STATICO - NO IPv6 e non intende utilizzare un server di posta.

Ho risolto il problema facendo:

1: esegui dpkg-reconfigure exim4-config

2: Quando si arriva alla domanda di ricerche DNS -> Impostare le ricerche DNS al minimo (Accesso remoto)

Mi ha dato un errore che questo tipo di ricerche non funzionava e il suggerimento di modificare / etc / hosts - ma l'unica cosa che ho fatto con / etc / hosts è stato commentare le linee ip6-allnodes e ip6-allrouters.

Il riavvio dovrebbe essere veloce ora (per me lo è almeno).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.