Inverser les recherches DNS ralentissant les opérations réseau sur le LAN

9

Environnement

Ma configuration LAN est assez basique:

  • Un routeur connecté au modem du FAI et à Internet
  • Mon PC de développement directement connecté au routeur

Le routeur fournit DHCP mais n'exécute pas son propre serveur DNS. En fait, il n'y a aucun serveur DNS hébergé sur mon réseau local (configuration de réseau domestique typique). Le routeur est configuré pour envoyer les serveurs DNS du FAI dans le cadre des informations de bail DHCP.

J'ai installé une machine VirtualBox sur mon PC de développement et y ai installé Debian Squeeze (6.0.4). Le mode réseau VirtualBox consiste Bridged Adapterà simuler un serveur autonome sur mon LAN. Être un serveur VirtualBox au lieu d'un serveur physique n'est pas vraiment important, mais je le mentionne pour être complet.

Le problème

Chaque fois qu'une opération réseau exécute une recherche DNS inversée d'une IP LAN avant de s'exécuter, le serveur a de longs délais. Quelques exemples d'opérations réseau lentes:

  • Connexion SSH au serveur depuis mon PC de développement
  • Connexion au port d'administration du serveur Glassfish
  • netstat -l( netstat -nlest très rapide)
  • Starting MTA: exim4 au démarrage prend beaucoup de temps pour terminer

Certains d'entre eux ont des solutions de contournement comme l'ajout de l'Ip de mon PC de développement /etc/hostsou l'ajout d'une option spécifique à la commande pour éviter de faire des recherches inverses DNS. Évidemment, l'utilisation /etc/hostsne va que jusqu'à présent car elle est en contradiction avec DHCP.

Cependant, je ne peux pas m'empêcher de penser que je manque quelque chose. Dois-je vraiment configurer un serveur DNS quelque part sur mon LAN? Cela semble être un effort énorme et inutile pour mes besoins et je ne peux pas croire qu'il n'y ait pas d'autre option dans un environnement DHCP comme le mien.

J'ai beaucoup cherché sur le net pour cela et peut-être que je n'ai pas les bons termes de recherche, mais je ne trouve pas la solution ...

mise à jour 1 suite à la réponse de BillThor

Utilisation de l'hôte (dig donne les mêmes résultats):

# 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

Mon /etc/resolv.conf (a été créé automatiquement lors de l'installation)

nameserver 192.168.1.1

L'hôte et la fouille reviennent très rapidement pour une adresse IP publique, mais prennent 10 secondes pour expirer pour une adresse IP LAN. Je suppose que 10s est ma valeur de timeout actuelle.

mise à jour 2

Avec le dev-pcfichier / etc / hosts:

$ time getent hosts 192.168.1.50
192.168.1.50    dev-pc

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

Sans dev-pcfichier / etc / hosts:

$ time getent hosts 192.168.1.50

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

Il semble de plus en plus que je devrais trouver des options de programme par morceaux ou des paramètres pour chacun essayant de faire des recherches DNS inversées! Aucune des machines (virtuelles ou non) ne peut agir comme un serveur DNS sur mon LAN car elles ne sont pas toujours actives. Malheureusement, le firmware du routeur ne comprend pas de serveur DNS.

bernie
la source

Réponses:

3

192.168.1.1 est-il l'adresse IP de votre routeur?

nameserver 192.168.1.1 suggère que votre routeur se présente comme un serveur DNS, plutôt que «d'envoyer les serveurs DNS du FAI».

Quelle marque et quel modèle de routeur possédez-vous? L'interface Web affiche-t-elle des messages de journal?

Je me demande si votre routeur transmet la demande aux serveurs de noms de votre FAI, mais les serveurs de noms de votre FAI abandonnent la demande, car ils ne veulent pas que vous sachiez comment leur machine avec IP 192.168.1.50est appelée.

Suggestions:

  • Vérifiez les paramètres de votre routeur. Il devrait répondre aux demandes de votre propre réseau privé . Peut-être pouvez-vous ajouter une entrée d'hôte statique dans l'interface Web de votre routeur?
  • Essayez d'installer Avahi sur tous les systèmes de votre réseau.
  • Dites à votre routeur d'utiliser Google Public DNS ( 8.8.8.8et 8.8.4.4) ou OpenDNS
Mikel
la source
Mon routeur est un "routeur NETGEAR WNR3500L" @ 192.168.1.1. Les journaux affichent uniquement les baux DHCP et les connexions à l'interface d'administration. Vous avez raison, le routeur envoie 192.168.1.1 comme serveur DNS lors de la gestion des baux DHCP (confirmé avec Wireshark). Sur l'interface d'administration du routeur, j'utilise "Get Automatically from ISP" pour les adresses DNS. L'autre option consiste à spécifier directement les serveurs DNS par IP. Je suppose que cela signifie que les requêtes DNS sont réellement transmises par le routeur.
bernie
Ouais, je suppose que ça transmet les requêtes DNS. Que se passe-t-il si vous le modifiez pour utiliser Google Public DNS ( 8.8.8.8et 8.8.4.4) à la place?
Mikel
Wow, cela fait vraiment une GRANDE différence! Apparemment, ces serveurs DNS (Google et OpenDNS) échouent rapidement lorsqu'ils reçoivent une adresse IP privée. Je ferai encore quelques tests, mais je pense que cela résout mon problème!
bernie
Marquer cela comme une réponse acceptée. Les 3 réponses ont été utiles, mais le changement des serveurs DNS a résolu le problème "dans son ensemble".
bernie
4

L'échec des recherches DNS devrait échouer rapidement. Cependant, je lance généralement dnsmasq qui lira le fichier hosts et servira ces entrées pour les recherches directes et inverses. Il agit également comme un serveur de mise en cache DNS pour réduire la charge sur vos serveurs DNS en amont.

Vous pouvez utiliser la commande hostou digpour voir quelles recherches sont lentes. Si vous êtes redirigé vers un serveur DNS qui n'exécute pas DNS, il faudra un certain temps pour échouer. Vous pouvez régler les délais et les tentatives /etc/resolv.confpour accélérer les échecs.

EDIT: Pour tester la réponse du résolveur, essayez d'utiliser time getent hosts 192.168.1.50. Cela devrait renvoyer des recherches à partir de votre /etc/hostsfichier ainsi que de DNS. Les commandes hostet digvérifient uniquement le DNS. Si cela revient mais prend quelques secondes, vous souhaiterez peut-être modifier l'ordre de l' hostsentrée dans les /etc/nsswitch.conffichiers de déplacement au début de la liste.

Le configurer dnsmasqet l'utiliser comme votre serveur de noms DNS principal dans /etc/resolve.confdevrait résoudre le problème si vous avez des programmes qui s'appuient uniquement sur DNS pour les recherches de noms. Exim doit utiliser le résolveur pour ses recherches de base. Vous aurez besoin d'un /etc/hostsfichier, sauf si vous pouvez désactiver le serveur DHCP sur votre routeur, vous pouvez l'utiliser dnsmasqpour DHCP. dnsmasqenregistrera automatiquement les noms s'ils sont fournis dans les requêtes DHCP qu'il gère.

EDIT2: Si aucun de vos ordinateurs n'est toujours en marche, vous voudrez peut-être regarder l'installation de samba et l'utiliser winsdans votre configuration nsswitch. Il doit être rapide, donc cela peut fonctionner si vous le mettez en avant dnsdans l'entrée des hôtes.

Vous pouvez également envisager d'installer les avahiutilitaires qui permettront la détection automatique sur les réseaux locaux de liaison. Je l'ai sur le côté IPv6, mais il ne publie pas d'adresses IPv4. Le domaine par défaut pour les hôtes est «.local». Cela peut ne pas convenir dans votre cas, mais peut être annulé. Il semble également que les recherches soient plus lentes que la winsmise en mdnsavant dnsdans la configuration nsswitch peut ne pas convenir.

BillThor
la source
Je pense qu'il a dit que tous (et seulement) les recherches LAN étaient lentes, et il essayait d'éviter complètement un fichier d'hôtes.
ckhan
Comme il ne s'agit que d'un serveur de test (et virtuel aussi!), Je ne peux pas m'y fier en tant que serveur DHCP pour l'ensemble du LAN. Il existe également d'autres clients sans fil occasionnels qui ont besoin d'une adresse IP même lorsque mon ordinateur de développement, et donc le serveur de test, ne fonctionne pas.
bernie
Mis à jour mon message à nouveau. Merci pour votre aide jusqu'à maintenant.
bernie
3

Si vous ne souhaitez pas effectuer l'exercice de configuration d'un serveur DNS local (et potentiellement DHCP) pour votre réseau domestique, vous pouvez indiquer aux services, dans la mesure du possible, de ne pas effectuer de recherches DNS inversées.

Par exemple, pour désactiver la recherche DNS inversée pour SSHD, ajoutez ce qui suit au sshd_configfichier (ou similaire selon la distribution):

UseDNS no

Vous pouvez supprimer cette ligne de la configuration Exim, bien que je ne sache pas si cela aura un impact sur la vitesse de démarrage, cela empêchera la recherche DNS inverse lors de la connexion des clients:

host_lookup = *

Il semble que vous puissiez exporter cette variable d'environnement pour l'utilisateur qui démarre le processus Glassfish:

export AS_NO_REVERSE_DNS=true

George M
la source
J'aimerais pouvoir configurer un serveur DNS avec l'équipement réel que j'ai, mais ce n'est pas vraiment faisable à moins que je charge un firmware alternatif sur le routeur. Merci pour les options de configuration; Je n'avais pas découvert l' AS_NO_REVERSE_DNSoption pour Glassfish donc je vais y jeter un œil.
bernie
1

A eu le même problème après être passé de IP dynamique à IP statique. Mon réseau est maintenant configuré: STATIQUE - PAS d'IPv6 et n'a pas l'intention d'utiliser un serveur de messagerie.

J'ai résolu le problème en faisant:

1: exécutez dpkg-reconfigure exim4-config

2: Lorsque vous arrivez à la question des recherches DNS -> Réglez les recherches DNS au minimum (Dial up)

Cela m'a donné une erreur que ce type de recherche n'allait pas fonctionner et la suggestion de modifier / etc / hosts - mais la seule chose que j'ai faite avec / etc / hosts était de commenter les lignes ip6-allnodes et ip6-allrouters.

Le redémarrage devrait être rapide maintenant (pour moi, au moins).

VU
la source