Reverse DNS-Lookups verlangsamen den Netzwerkbetrieb im LAN


9

Umgebung

Mein LAN-Setup ist ziemlich einfach:

  • Ein Router, der mit dem Modem des Internetdienstanbieters und dem Internet verbunden ist
  • Mein Entwicklungs-PC ist direkt mit dem Router verbunden

Der Router bietet DHCP, führt jedoch keinen eigenen DNS-Server aus. Tatsächlich gibt es in meinem LAN keinen DNS-Server (typisches Heimnetzwerk-Setup). Der Router ist so konfiguriert, dass er die DNS-Server des Internetdienstanbieters als Teil der DHCP-Lease-Informationen sendet.

Ich habe eine VirtualBox-Maschine auf meinem Entwicklungs-PC eingerichtet und Debian Squeeze (6.0.4) darauf installiert. Im VirtualBox-Netzwerkmodus wird Bridged Adapterein eigenständiger Server in meinem LAN simuliert. Ein VirtualBox-Server anstelle eines physischen Servers zu sein, ist nicht wirklich wichtig, aber ich erwähne es der Vollständigkeit halber.

Das Problem

Jedes Mal, wenn ein Netzwerkvorgang vor der Ausführung eine DNS-Reverse-Suche einer LAN-IP ausführt, hat der Server lange Verzögerungen. Einige Beispiele für langsame Netzwerkoperationen:

  • SSH-Verbindung zum Server von meinem Entwicklungs-PC
  • Verbindung zum Admin-Port des Glassfish-Servers
  • netstat -l( netstat -nlist sehr schnell)
  • Starting MTA: exim4 Der Startvorgang dauert lange

Einige davon haben Problemumgehungen wie das Hinzufügen der IP-Adresse meines Entwicklungs-PCs /etc/hostsoder das Hinzufügen einer befehlsspezifischen Option, um DNS-Reverse-Lookups zu vermeiden. Offensichtlich geht die Verwendung /etc/hostsnur so weit, weil sie im Widerspruch zu DHCP steht.

Ich kann jedoch nicht anders, als zu glauben, dass mir etwas fehlt. Muss ich wirklich irgendwo in meinem LAN einen DNS-Server einrichten? Das scheint eine enorme und nutzlose Anstrengung für meine Bedürfnisse zu sein, und ich kann nicht glauben, dass es in einer DHCP-Umgebung wie meiner keine andere Option gibt.

Ich habe viel im Internet danach gesucht und vielleicht habe ich nicht die richtigen Suchbegriffe, aber ich kann die Lösung nicht finden ...

Update 1 nach der Antwort von BillThor

Verwenden des Hosts (dig liefert die gleichen Ergebnisse):

# 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

Meine /etc/resolv.conf (wurde während der Installation automatisch erstellt)

nameserver 192.168.1.1

Sowohl Host als auch Dig kehren für eine öffentliche IP sehr schnell zurück, benötigen jedoch 10 Sekunden, um für eine LAN-IP eine Zeitüberschreitung zu erzielen. Ich denke 10s ist mein aktueller Timeout-Wert.

Update 2

Mit dev-pcin / etc / hosts Datei:

$ time getent hosts 192.168.1.50
192.168.1.50    dev-pc

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

Ohne dev-pcin / etc / hosts Datei:

$ time getent hosts 192.168.1.50

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

Es sieht immer mehr so ​​aus, als müsste ich stückweise Programmoptionen oder -parameter für jeden finden, der versucht, umgekehrte DNS-Lookups durchzuführen! Keine der Maschinen (virtuell oder nicht) kann als DNS-Server in meinem LAN fungieren, da sie nicht immer aktiv sind. Leider enthält die Firmware des Routers keinen DNS-Server.

Antworten:


3

Ist 192.168.1.1 die IP-Adresse Ihres Routers?

nameserver 192.168.1.1 schlägt vor, dass Ihr Router sich selbst als DNS-Server bewirbt, anstatt "die DNS-Server des ISP zu senden".

Welche Marke und welches Router-Modell haben Sie? Zeigt die Weboberfläche Protokollmeldungen an?

Ich frage mich, ob Ihr Router die Anfrage an die Nameserver Ihres ISP weiterleitet, aber die Nameserver Ihres ISP löschen die Anfrage, weil sie nicht möchten, dass Sie wissen, wie ihr Computer mit IP 192.168.1.50heißt.

Vorschläge:

  • Überprüfen Sie die Einstellungen Ihres Routers. Es sollte Anfragen für Ihr eigenes privates Netzwerk beantworten . Vielleicht können Sie einen statischen Hosteintrag in die Weboberfläche Ihres Routers einfügen?
  • Versuchen Sie, Avahi auf allen Systemen in Ihrem Netzwerk zu installieren .
  • Weisen Sie Ihren Router an, Google Public DNS ( 8.8.8.8und 8.8.4.4) oder OpenDNS zu verwenden

Mein Router ist ein "NETGEAR Router WNR3500L" @ 192.168.1.1. In den Protokollen werden nur DHCP-Leases und Anmeldungen an der Administrationsoberfläche angezeigt. Sie haben Recht, der Router sendet 192.168.1.1 als DNS-Server, wenn er DHCP-Leases bearbeitet (bestätigt mit Wireshark). Auf der Administrationsoberfläche des Routers verwende ich "Automatisch vom ISP abrufen" für die DNS-Adressen. Die andere Option besteht darin, DNS-Server direkt nach IP anzugeben. Ich denke, dies bedeutet, dass DNS-Anfragen tatsächlich vom Router weitergeleitet werden.
Bernie

Ja, ich vermute, es leitet die DNS-Anfragen weiter. Was ist, wenn Sie es ändern, um stattdessen Google Public DNS ( 8.8.8.8und 8.8.4.4) zu verwenden?
Mikel

Wow, das macht tatsächlich einen großen Unterschied! Anscheinend fallen diese DNS-Server (Google und OpenDNS) schnell aus, wenn eine private IP-Adresse angegeben wird. Ich werde noch ein paar Tests durchführen, aber ich denke, das löst mein Problem!
Bernie

Markieren Sie dies als akzeptierte Antwort. Die 3 Antworten waren hilfreich, aber das Ändern der DNS-Server löste das Problem "auf freiem Fuß".
Bernie

4

Fehlschlagende DNS-Suchvorgänge sollten schnell fehlschlagen. Im Allgemeinen führe ich jedoch dnsmasq aus, das die Hosts-Datei liest und diese Einträge für die Vorwärts- und Rückwärtssuche bereitstellt. Es fungiert auch als DNS-Caching-Server, um die Belastung Ihrer Upstream-DNS-Server zu verringern.

Möglicherweise möchten Sie den Befehl hostoder verwenden dig, um festzustellen, welche Suchvorgänge langsam sind. Wenn Sie zu einem DNS-Server umgeleitet werden, auf dem DNS nicht ausgeführt wird, dauert es eine Weile, bis ein Fehler auftritt. Sie können die Zeitüberschreitungen einstellen und erneut versuchen /etc/resolv.conf, um die Fehler zu beschleunigen.

BEARBEITEN: Um die Resolver-Antwort zu testen, versuchen Sie es mit time getent hosts 192.168.1.50. Dies sollte sowohl Lookups aus Ihrer /etc/hostsDatei als auch aus DNS zurückgeben. Die Befehle hostund digprüfen nur DNS. Wenn dies zurückkehrt, aber einige Sekunden dauert, möchten Sie möglicherweise die Reihenfolge des hostsEintrags in /etc/nsswitch.confVerschiebungsdateien an den Anfang der Liste ändern .

Das Einrichten dnsmasqund Verwenden als primärer DNS-Nameserver in /etc/resolve.confsollte das Problem beheben, wenn Sie Programme haben, die bei der Namenssuche nur auf DNS angewiesen sind. Exim sollte den Resolver für die Basissuche verwenden. Sie benötigen eine /etc/hostsDatei, die Sie dnsmasqfür DHCP verwenden können, es sei denn, Sie können den DHCP-Server auf Ihrem Router deaktivieren . dnsmasqregistriert automatisch Namen, wenn sie in DHCP-Anforderungen angegeben sind, die es verarbeitet.

EDIT2: Wenn keiner Ihrer Computer immer aktiv ist, sollten Sie sich die Installation von Samba und die Verwendung winsin Ihrer nsswitch-Konfiguration ansehen. Es sollte schnell sein, damit es funktioniert, wenn Sie es dnsin den Hosts-Eintrag einfügen.

Sie können sich auch die Installation der avahiDienstprogramme ansehen, die die automatische Erkennung in verbindungslokalen Netzwerken ermöglichen. Ich habe es auf der IPv6-Seite arbeiten, aber es veröffentlicht keine IPv4-Adressen. Die Standarddomäne für Hosts ist '.local'. Dies ist in Ihrem Fall möglicherweise nicht geeignet, kann jedoch überschrieben werden. Es scheint auch langsame Lookups tun , als winsso setzt mdnsvoraus dnsmöglicherweise nicht geeignet in der nsswitch Konfiguration.


Ich denke, er sagte, dass alle (und einzigen) LAN-Suchvorgänge langsam sind und er versucht, eine Hosts-Datei insgesamt zu vermeiden.
Ckhan

Da dies nur ein Testserver ist (und auch ein virtueller!), Kann ich mich nicht darauf als DHCP-Server für das gesamte LAN verlassen. Es gibt auch andere gelegentliche drahtlose Clients, die eine IP benötigen, selbst wenn mein Entwicklungs-PC und damit der Testserver nicht ausgeführt werden.
Bernie

Mein Beitrag wurde erneut aktualisiert. Vielen Dank für Ihre bisherige Hilfe.
Bernie

3

Wenn Sie nicht die Einrichtung eines lokalen DNS- (und möglicherweise DHCP-) Servers für Ihr Heimnetzwerk durchführen möchten, können Sie den Diensten nach Möglichkeit mitteilen, dass keine umgekehrten DNS-Suchvorgänge durchgeführt werden sollen.

Um beispielsweise die Reverse-DNS-Suche für SSHD zu deaktivieren, fügen Sie der sshd_configDatei Folgendes hinzu (oder ähnliches, je nach Distribution):

UseDNS no

Sie können diese Zeile aus der Exim-Konfiguration entfernen. Ich bin mir jedoch nicht sicher, ob dies Auswirkungen auf die Startgeschwindigkeit hat. Sie verhindert jedoch die umgekehrte DNS-Suche beim Verbinden von Clients:

host_lookup = *

Es sieht so aus, als könnten Sie diese Umgebungsvariable für den Benutzer exportieren, der den Glassfish-Prozess startet:

export AS_NO_REVERSE_DNS=true


Ich wünschte, ich könnte einen DNS-Server mit der tatsächlichen Ausrüstung einrichten, die ich habe, aber es ist nicht wirklich machbar, wenn ich keine alternative Firmware auf den Router lade. Danke für die Konfigurationsoptionen; Ich hatte nichts über die AS_NO_REVERSE_DNSOption für Glassfish herausgefunden, also werde ich einen Blick darauf werfen.
Bernie

1

Hatte das gleiche Problem nach dem Wechsel von dynamischer zu statischer IP. Mein Netzwerk ist jetzt konfiguriert: STATIC - NO IPv6 und beabsichtigt nicht, einen Mailserver zu verwenden.

Ich habe das Problem folgendermaßen gelöst:

1: Führen Sie dpkg-refreshfigure exim4-config aus

2: Wenn Sie zur Frage der DNS-Suche gelangen -> Stellen Sie die DNS-Suche auf Minimum ein (DFÜ)

Es gab mir den Fehler, dass diese Art der Suche nicht funktionieren würde und der Vorschlag, / etc / hosts zu bearbeiten - aber das einzige, was ich mit / etc / hosts gemacht habe, war das Auskommentieren der Zeilen ip6-allnodes und ip6-allrouters.

Der Neustart sollte jetzt schnell sein (für mich ist es zumindest).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.