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 -nl
est 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/hosts
ou l'ajout d'une option spécifique à la commande pour éviter de faire des recherches inverses DNS. Évidemment, l'utilisation /etc/hosts
ne 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-pc
fichier / 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-pc
fichier / 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.
la source
8.8.8.8
et8.8.4.4
) à la place?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
host
oudig
pour 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.conf
pour 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/hosts
fichier ainsi que de DNS. Les commandeshost
etdig
vérifient uniquement le DNS. Si cela revient mais prend quelques secondes, vous souhaiterez peut-être modifier l'ordre de l'hosts
entrée dans les/etc/nsswitch.conf
fichiers de déplacement au début de la liste.Le configurer
dnsmasq
et l'utiliser comme votre serveur de noms DNS principal dans/etc/resolve.conf
devrait 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/hosts
fichier, sauf si vous pouvez désactiver le serveur DHCP sur votre routeur, vous pouvez l'utiliserdnsmasq
pour DHCP.dnsmasq
enregistrera 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
wins
dans votre configuration nsswitch. Il doit être rapide, donc cela peut fonctionner si vous le mettez en avantdns
dans l'entrée des hôtes.Vous pouvez également envisager d'installer les
avahi
utilitaires 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 lawins
mise enmdns
avantdns
dans la configuration nsswitch peut ne pas convenir.la source
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_config
fichier (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
la source
AS_NO_REVERSE_DNS
option pour Glassfish donc je vais y jeter un œil.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).
la source