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 Adapter
di 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/hosts
o l'aggiunta di un'opzione specifica del comando per evitare di effettuare ricerche inverse DNS. Ovviamente, l'utilizzo /etc/hosts
va 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-pc
in / 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-pc
nel 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.