La meilleure façon de configurer la mise en cache DNS?

28

Afin d'accélérer les recherches DNS, je souhaite installer un cache DNS ou un proxy.

Je peux voir au moins trois programmes qui, je pense, feront l'affaire: bind9, pdnsd ou dnsmasq.

Je voudrais m'assurer que si j'installe un des je ne le laisse pas mal configuré d'un point de vue performance ou sécurité. Alors, que recommanderiez-vous et y a-t-il des changements de configuration que je devrais faire immédiatement après l'installation?


la source
Pour un poste de travail, non? Ou parlons-nous LAN / ISP?
Oui, c'est pour accélérer les postes de travail individuels, pas pour un LAN.

Réponses:

15
  1. Installer bind9
  2. Pointez resolv.conf vers 127.0.0.1

Pour ce faire, procédez comme suit:

Pour installer Bind9

  1. Ouvrez "Ubuntu Software Center" (Applications-> Ubuntu Software Center)
  2. Rechercher bind9
  3. Cochez pour afficher les «Articles techniques»
  4. Marquez bind9 et installez-le

Mettre à jour /etc/resolv.conf

  1. Ouvrez Network Manager (Système-> Préférences-> Network Manager)
  2. Trouvez votre connexion et modifiez-la (filaire ou sans fil)
  3. Basculer l'onglet "Configuration IPV4"
  4. Dans le champ "Serveurs DNS", écrivez 127.0.0.1

C'est fait!

Tester

Ouvrez gnome-terminal (Applications> Accessoires> Terminal) et tapez

dig ubuntu.com 

(si vous ne l'avez pas, installez le paquetage dnsutils comme expliqué dans bind9)

Vérifiez les dernières réponses, par exemple:

Ma première requête sur 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

Ma deuxième requête:

;; 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

Le serveur 127.0.0.1 signifie que vous résolvez localement. Jetez un œil au temps de requête (entouré de **), le second est mis en cache.

Lin
la source
Merci, Igor. J'ai essayé cette approche et cela fonctionne bien pour les recherches de nom, mais il ne semble pas mettre en cache les recherches d'adresse IP inversées. Comment pourrais-je faire cela en utilisant bind9?
Cela n'a rien fait sur ma configuration. Le temps de requête est toujours ~
100 ms
Tous les deux: si cela ne semble pas fonctionner, vérifiez de quelle fouille de serveur il a obtenu la réponse. S'il ne dit pas 127.0.0.1, alors vous ne l'avez pas configuré correctement. Remarque: Les instructions pour définir resolv.conf peuvent être différentes pour différentes versions d'Ubuntu.
thomasrutter
Vous exécutez donc un serveur de noms de mise en cache sur la boîte à interface graphique? Oui, c'est possible bien sûr .. Plus probablement que la plupart des personnes lisant ceci auront une installation sur le serveur - et l'interface graphique est facultative. Un simple sudo apt install bind9et sudo nano /etc/resolv.confdevrait être ajouté à votre réponse comme alternatives.
bshea
J'ai tout fait mais la configuration ne fonctionne pas. Je l'ai enfin fait resolv.confpour 127.0.0.1. Cela peut-il échouer? dig ubunut.comdit "la connexion a expiré; aucun serveur n'a pu être atteint"
Satya Prakash
9

Je recommanderais dnsmasq,

Voir un joli tutoriel ici; http://embraceubuntu.com/2006/08/02/local-dns-cache-for-faster-browsing/

Vous voudrez peut-être lire une comparaison ici;

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

dblang
la source
J'utilise dnsmasq pour la mise en cache DNS. Également fourni des mappages locaux à partir de / etc / hosts et DHCP (en utilisant éventuellement / etc / ethers.)
BillThor
J'ai essayé dnsmasq et cela fonctionne aussi bien que bind9 pour la mise en cache des recherches de nom, mais il ne semble pas non plus mettre en cache les recherches d'adresse IP. Est-ce possible en utilisant dnsmasq?
1
Méfiez-vous de Network Manager écrasant votre resolv.conf à chaque démarrage.
daithib8
6

"Afin d'accélérer les recherches DNS, je souhaite installer un cache DNS ou un proxy."

D'accord. Mais il existe aussi un moyen plus simple. L'utilisation d'OpenDNS et / ou des serveurs de noms Google sera plus rapide que votre propre cache local pour les noms qui existent déjà dans les caches OpenDNS / Google. L'utilisation de 208.67.222.222, 208.67.220.220 et / ou 8.8.8.8 comme serveurs de noms sera plus rapide presque tout le temps. Vous pouvez tester cela avec time nslookup www.google.com 208.67.222.222pour tester la vitesse sur l'un des serveurs de noms OpenDNS, time nslookup www.google.com 8.8.8.8pour Google ou time nslookup www.google.com 127.0.0.1sur votre cache local. Quand je dis plus vite, je veux dire techniquement plus vite et pas tellement plus vite qu'une personne pourrait facilement remarquer une différence.

"Je peux voir au moins trois programmes qui, je pense, feront l'affaire: bind9, pdnsd ou dnsmasq."

Êtes-vous ouvert à la partie dnscache de djbdns? Instructions ci-dessous. Cependant, il ne sauvegarde pas le cache sans 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

Ensuite, nous devrons dire au système d'utiliser notre cache.

sudo gedit /etc/resolv.conf

Modifiez le fichier pour qu'il ressemble à cet exemple. Ce fichier définit les serveurs de noms à utiliser, le domaine par défaut et le suffixe de recherche. Le suffixe de recherche permet d'exécuter des requêtes en utilisant uniquement la partie nom d'hôte d'un nom de domaine complet. Par exemple, «nslookup www» devient automatiquement «nslookup www.example.com» lorsque example.com est la valeur du paramètre «search».

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

C'est un peu fantaisiste, mais nous devons obtenir les derniers serveurs de noms racine.

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

Je pense que le fichier resolv.conf est écrasé lorsque nous utilisons DHCP. Je choisis de me donner une adresse IP statique et de supprimer le logiciel qui l'écrase, en éditant le fichier d'interface pour configurer l'adresse IP statique. Mais vous pouvez essayer de travailler avec Network Manager si vous en avez envie.

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

Mon fichier d'interfaces se présente comme suit, mais modifiez le vôtre à votre configuration.

# 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

Maintenant, recommençons.

sudo reboot

Vous utilisez maintenant un résolveur local et les derniers serveurs racine. Mais vous remarquerez que si vous essayez, OpenDNS et Google répondent en fait plus rapidement (pour les noms qui se trouvent dans leurs caches, qui sont tous les domaines les plus populaires). Il n'y a pas de configuration supplémentaire qui pourrait rendre le logiciel plus sécurisé qu'il ne l'est déjà.


la source
Merci Christopher. Pouvez-vous expliquer pourquoi Google DNS est plus rapide que mon cache local? Je crois que c'est rapide, mais comment pourrait-il être plus rapide d'aller jusqu'à leur serveur que d'aller dans mon cache local?
Eric Johnson
Parce que les chances sont très bonnes qu'il ait déjà la réponse sans avoir à la rechercher à nouveau.
@Christopher: Mais une fois que votre cache local l'a, les recherches sont instantanées. Si vous utilisez Google DNS, vous devez attendre 80 ms à chaque fois que vous effectuez une requête.
Zan Lynx
@Zan Lynx Ouais .. alors demandez à votre cache local de demander à Google. Woo-hoo!
6
Bien que @ user8290 ait un point, je ne dirais pas que l'utilisation de GoogleDNS est plus rapide que locale. Oui, Google a les résultats mis en cache, mais allez - si votre vitesse internationale est nulle, cela n'a pas d'importance même si Google a tous les résultats DNS dans le monde. Les réseaux locaux ont généralement 100 Mbps +, donc demander une réponse au serveur DNS de votre réseau local sera au moins 10 fois plus rapide que demander le 8.8.8.8/8.8.4.4 (en fonction de votre vitesse internationale). Bien sûr, cela signifie que le résultat est mis en cache sur votre serveur DNS.
tftd
3

J'utilise " dnscache " ( package "dnscache-run" ) et c'est très simple. Pas besoin de configurer quoi que ce soit.
Il capture les requêtes DNS ( port 53 ) et met en cache les réponses, la prochaine fois que Linux demandera ce domaine, dnscache renvoie immédiatement l'IP.
Bien qu'il existe deux paramètres qui peuvent être modifiés pour améliorer ce programme:

echo 16000000 > /etc/sv/dnscache/env/CACHESIZE
echo 16777216 > /etc/sv/dnscache/env/DATALIMIT
Juan Simón
la source
0

Quel que soit l'outil que vous utilisez, assurez-vous que le port 53 n'est pas activé entrant sur votre pare-feu. Vous souhaiterez peut-être autoriser uniquement l'hôte avec l'accès sortant du cache.

DNSMasq est facile à configurer et bien documenté. Si vous l'installez sur un pare-feu, spécifiez les interfaces à lier à l'exclusion de l'interface Internet.

La liaison est plus difficile à configurer et peut être exagérée comme cache pour un petit réseau. Je crois que la configuration par défaut est la mise en cache uniquement. Vous souhaiterez peut-être ajouter une ACL pour restreindre les adresses qui peuvent utiliser votre serveur.

BillThor
la source
0

Le paquetage dnscache-run a eu le moins de conflits avec d'autres paquets, comme libvirt, qui utilisent la mise en réseau de ponts et dnsmasq.

sudo apt-get install dnscache-run

Ce paquet supprime resolvconf (/etc/resolv.conf), et vous devrez utiliser / etc / network / interfaces ou le gestionnaire de réseau pour afficher votre configuration.

rickfoosusa
la source