Il modo migliore per impostare la memorizzazione nella cache DNS?


28

Per velocizzare le ricerche DNS, voglio installare una cache DNS o un proxy.

Riesco a vedere almeno tre programmi che penso faranno il lavoro: bind9, pdnsd o dnsmasq.

Vorrei assicurarmi che se ne installo uno non lo lasci mal configurato in termini di prestazioni o sicurezza. Quindi, cosa consiglierebbero le persone e ci sono delle modifiche alla configurazione che dovrei fare subito dopo l'installazione?


Per una workstation, giusto? O stiamo parlando LAN / ISP?

Sì, questo è per accelerare le singole workstation, non per una LAN.

Risposte:


15
  1. Installa bind9
  2. Puntare resolv.conf a 127.0.0.1

Per fare ciò segui questi passaggi:

Per installare Bind9

  1. Apri "Ubuntu Software Center" (Applicazioni-> Ubuntu Software Center)
  2. Cerca bind9
  3. Selezionare per visualizzare "Articoli tecnici"
  4. Segna bind9 e installalo

Aggiorna /etc/resolv.conf

  1. Apri Network Manager (Sistema-> Preferenze-> Network Manager)
  2. Trova la tua connessione e modificala (cablata o wireless)
  3. Attiva / disattiva la scheda "Configurazione IPV4"
  4. Nel campo "Server DNS" scrivi 127.0.0.1

E 'fatto!

Testare

Apri gnome-terminal (Applicazioni> Accessori> Terminale) e digita

dig ubuntu.com 

(se non lo hai, installa il pacchetto dnsutils come spiegato in bind9)

Controlla le ultime risposte, ad esempio:

La mia prima query su ubuntu.com

;; Query time: **209 msec**
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jan 22 12:20:12 2011
;; MSG SIZE  rcvd: 196

La mia seconda query:

;; Query time: **0 msec**
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jan 22 12:18:23 2011
;; MSG SIZE  rcvd: 156

Il server 127.0.0.1 significa che stai risolvendo localmente. Dai un'occhiata al tempo di query (racchiuso da **), il secondo è memorizzato nella cache.


Grazie Igor. Ho provato questo approccio e funziona bene per le ricerche di nomi, ma non sembra memorizzare nella cache ricerche di indirizzi IP inverse. Come lo farei usando bind9?

Questo non ha fatto nulla sulla mia configurazione. Il tempo delle query è ancora ~ 100 ms
Ashfame,

Entrambi: se non sembra funzionare, controlla da quale server dig dice che ha ottenuto la risposta. Se non dice 127.0.0.1, non è stato impostato correttamente. Nota: le istruzioni per l'impostazione di resolv.conf potrebbero essere diverse per le diverse versioni di Ubuntu.
thomasrutter,

Quindi stai eseguendo un nameserver con memorizzazione nella cache su gui box? Sì, è possibile ovviamente. Molto probabilmente la maggior parte delle letture di ppl avrà l'installazione di un server - e la GUI è opzionale. Un semplice sudo apt install bind9e sudo nano /etc/resolv.confdovrebbe essere aggiunto alla tua risposta come alternative.
bshea,

Ho fatto tutto ma l'installazione non funziona. L'ho fatto resolv.confa 127.0.0.1, finalmente. Questo può fallire? dig ubunut.comdice "timeout della connessione; non è stato possibile raggiungere nessun server"
Satya Prakash,

9

Consiglierei dnsmasq,

Guarda un bel tutorial qui; http://embraceubuntu.com/2006/08/02/local-dns-cache-for-faster-browsing/

Potresti voler leggere un confronto qui;

http://en.wikipedia.org/wiki/Comparison_of_DNS_server_software


Uso dnsmasq per la memorizzazione nella cache DNS. Ha anche fornito mappature locali da / etc / hosts e DHCP (facoltativamente usando / etc /
ethers

Ho provato dnsmasq e funziona così come bind9 per le ricerche dei nomi nella cache, ma non sembra anche memorizzare nella cache le ricerche degli indirizzi IP. È possibile usare dnsmasq?

1
Fai attenzione a Network Manager che sovrascrive il tuo resolv.conf ogni volta che si avvia.
daithib8,

6

"Per velocizzare le ricerche DNS, voglio installare una cache DNS o un proxy."

Ok. Ma c'è anche un modo più semplice. L'uso di OpenDNS e / o dei server dei nomi di Google sarà più veloce della tua cache locale per i nomi già esistenti nelle cache di OpenDNS / Google. L'uso di 208.67.222.222, 208.67.220.220 e / o 8.8.8.8 come nome serve sarà più veloce quasi sempre. Puoi testarlo con time nslookup www.google.com 208.67.222.222per testare la velocità su uno dei server dei nomi OpenDNS, time nslookup www.google.com 8.8.8.8per Google o time nslookup www.google.com 127.0.0.1sulla tua cache locale. Quando dico più veloce, intendo tecnicamente più veloce e non molto più veloce che una persona potrebbe facilmente notare una differenza.

"Riesco a vedere almeno tre programmi che penso faranno il lavoro: bind9, pdnsd o dnsmasq."

Sei aperto alla parte dnscache di djbdns? Istruzioni di seguito. Tuttavia, non salva la cache senza una patch ...

sudo apt-get remove bind9 dnsmasq-base
sudo apt-get install djbdns dnscache-run
sudo killall -9 dnsmasq
sudo update-rc.d -f bind9 remove

Quindi dovremo dire al sistema di usare la nostra cache.

sudo gedit /etc/resolv.conf

Modifica il file per assomigliare a questo esempio. Questo file definisce quali server dei nomi utilizzare, il dominio predefinito e il suffisso di ricerca. Il suffisso di ricerca consente di eseguire query utilizzando solo la parte del nome host di un nome di dominio completo. Ad esempio, 'nslookup www' diventa automaticamente 'nslookup www.example.com' quando example.com è il valore del parametro "cerca".

nameserver 127.0.0.1      # Use the local resolver first.
nameserver 208.67.222.222 # OpenDNS
nameserver 8.8.8.8        # Google
domain example.com
search example.com

Questo è un po 'elaborato, ma dobbiamo ottenere i server dei nomi root più recenti.

sudo dnsip $(dnsqr ns . | sed -e '/answer/!d;s/\(.*\)NS \(.*\)/\2/') | sudo tee /etc/dnscache/root/servers/@

Penso che il file resolv.conf venga sovrascritto quando usiamo DHCP. Ho scelto di darmi un indirizzo IP statico e rimuovere il software che lo schiaccia, modificando il file delle interfacce per impostare l'indirizzo IP statico. Ma potresti provare a lavorare con Network Manager se sei così propenso.

sudo apt-get purge network-manager network-manager-gnome
sudo gedit /etc/network/interfaces

Il mio file di interfacce ha il seguente aspetto, ma modifica il tuo in base alla tua configurazione.

# Loopback
#
auto lo
iface lo inet loopback

# First network card (attached to NAT router, attached to cable internet)
#
auto eth0
iface eth0 inet static
address 192.168.1.254
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

Ora ricominciamo.

sudo reboot

Ora stai usando un resolver locale e gli ultimi root server. Ma noterai se provi che OpenDNS e Google stanno effettivamente rispondendo più velocemente (per i nomi che sono nella loro cache, che è tutti i domini più popolari). Non esiste alcuna configurazione aggiuntiva che possa rendere il software più sicuro di quello che è già.


Grazie Christopher. Puoi spiegare perché Google DNS è più veloce della mia cache locale? Credo che sia veloce, ma come potrebbe essere più veloce accedere al loro server piuttosto che alla mia cache locale?
Eric Johnson,

Perché è molto probabile che abbia già la risposta senza doverla cercare di nuovo.

@Christopher: Ma una volta che la tua cache locale lo ha, le ricerche sono istantanee. Se si utilizza Google DNS, è necessario attendere 80 ms ogni volta che si esegue una query.
Zan Lynx,

@Zan Lynx Sì .. quindi fai chiedere a Google la cache locale. Woo-hoo!

6
Sebbene @ user8290 abbia un punto, non direi che l'utilizzo di GoogleDNS sia più veloce di uno locale. Sì, Google ha i risultati memorizzati nella cache, ma dai - se la tua velocità internazionale fa schifo, non importa anche se Google ha avuto tutti i risultati DNS nel mondo. Le reti locali di solito hanno 100 Mbps +, quindi chiedere una risposta al server DNS della propria rete sarà almeno 10 volte più veloce rispetto a chiedere 8.8.8.8/8.8.4.4 (a seconda della velocità internazionale). Ovviamente ciò è dovuto al fatto che il risultato è memorizzato nella cache sul server DNS.
tftd

3

Sto usando " dnscache " ( pacchetto "dnscache-run" ) ed è molto semplice. Non è necessario configurare nulla.
Cattura le petizioni DNS ( porta 53 ) e memorizza nella cache le risposte, la prossima volta che Linux richiede quel dominio, dnscache restituisce immediatamente l'IP.
Sebbene ci siano due parametri che possono essere modificati per migliorare questo programma:

echo 16000000 > /etc/sv/dnscache/env/CACHESIZE
echo 16777216 > /etc/sv/dnscache/env/DATALIMIT

0

Qualunque strumento tu usi, assicurati che la porta 53 non sia abilitata in entrata sul tuo firewall. È possibile consentire solo all'host con l'accesso in uscita dalla cache.

DNSMasq è facile da configurare e ben documentato. Se lo installi su un firewall, specifica le interfacce da associare all'esclusione dell'interfaccia Internet.

Il bind è più difficile da configurare e può essere eccessivo come cache per una piccola rete. Credo che la configurazione predefinita sia solo nella cache. Potresti voler aggiungere un ACL per limitare quali indirizzi possono usare il tuo server.


0

Il pacchetto dnscache ha avuto il minimo conflitto con altri pacchetti, come libvirt, che usano bridge networking e dnsmasq.

sudo apt-get install dnscache-run

Questo pacchetto rimuove resolvconf (/etc/resolv.conf) e sarà necessario utilizzare / etc / network / interfaces o gestore di rete per visualizzare la configurazione.

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.