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 Adapter
ein 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 -nl
ist sehr schnell)Starting MTA: exim4
Der Startvorgang dauert lange
Einige davon haben Problemumgehungen wie das Hinzufügen der IP-Adresse meines Entwicklungs-PCs /etc/hosts
oder das Hinzufügen einer befehlsspezifischen Option, um DNS-Reverse-Lookups zu vermeiden. Offensichtlich geht die Verwendung /etc/hosts
nur 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-pc
in / 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-pc
in / 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.
quelle
8.8.8.8
und8.8.4.4
) zu verwenden?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
host
oder verwendendig
, 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/hosts
Datei als auch aus DNS zurückgeben. Die Befehlehost
unddig
prüfen nur DNS. Wenn dies zurückkehrt, aber einige Sekunden dauert, möchten Sie möglicherweise die Reihenfolge deshosts
Eintrags in/etc/nsswitch.conf
Verschiebungsdateien an den Anfang der Liste ändern .Das Einrichten
dnsmasq
und Verwenden als primärer DNS-Nameserver in/etc/resolve.conf
sollte 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/hosts
Datei, die Siednsmasq
für DHCP verwenden können, es sei denn, Sie können den DHCP-Server auf Ihrem Router deaktivieren .dnsmasq
registriert 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
wins
in Ihrer nsswitch-Konfiguration ansehen. Es sollte schnell sein, damit es funktioniert, wenn Sie esdns
in den Hosts-Eintrag einfügen.Sie können sich auch die Installation der
avahi
Dienstprogramme 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 , alswins
so setztmdns
vorausdns
möglicherweise nicht geeignet in der nsswitch Konfiguration.quelle
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_config
Datei 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
quelle
AS_NO_REVERSE_DNS
Option für Glassfish herausgefunden, also werde ich einen Blick darauf werfen.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).
quelle