Ich verwende Ubuntu 10.04.2 LTS Desktop. Als Webentwickler habe ich natürlich ein "me.com" in meiner /etc/hosts
Datei erstellt. Leider wird meine Namensauflösung vor der ersten Überprüfung meines lokalen Hosteintrags an den DNS gesendet, und ich kann nicht herausfinden, warum.
Das Endergebnis ist, dass, wenn meine /etc/resolv.conf nameserver 127.0.0.1
zuerst darin enthalten ist, ich innerhalb von weniger als einer Sekunde eine Antwort von me.com (local) in meinem Webbrowser erhalte. Aber wenn ich diesen Eintrag nicht habe, dauert meine Antwort manchmal bis zu 5 Sekunden, wenn mein ISP etwas langsam ist.
Das Problem war so lästig, dass ich hier tatsächlich eine Frage stellen musste (und jemand hat sie gelöst), wie dieser Eintrag automatisch eingefügt werden kann /etc/resolv.conf
. Aber einer der User (@shellholic) hat mir hier dringend empfohlen (und mit mir darüber hin und her kommentiert), dass ich diese Frage stellen soll.
Wissen Sie, warum die Namensauflösung meiner Workstation zuerst den DNS-Server erreichen muss, bevor ich meinen /etc/hosts
Dateieintrag erhalte? Im Moment verwende ich den Trick resolv.conf .
quelle
/etc/nsswitch.conf
. Die Einträge in meinem System sind ein wenig nicht offensichtlich, aber Sie können Lookups nurfiles
als Option testen und sehen, ob dies einen Unterschied macht.cat /etc/nsswitch.conf
und gebencat /etc/host.conf
? Außerdem: Wie testen Sie dies (durch Ping, Browser, Packet Sniffing usw.)?time getent hosts me.com; hostname --fqdn; grep 'me.com' /etc/hosts; grep hosts /etc/nsswitch.conf; netstat -uln | grep ':53'; cat /etc/host.conf; wc -l /etc/hosts
. Zögern Sie nicht, die Rationalität zu verschleiern.Antworten:
Die Datei
/etc/nsswitch.conf
können Sie die Reihenfolge der Namensauflösung neu konfigurieren. Standardmäßig ist die Hostdatei die erste und dann die konfigurierte DNS. Es könnte mehr Möglichkeiten geben.Die Datei
/etc/hosts
listet nur IP-Adressen und Hostnamen auf (mehrere Namen für eine IP, wenn Sie möchten)In der Datei
/etc/resolv.conf
werden die Standardsuchdomänen und die zu verwendenden Nameserver nacheinander aufgelistet.quelle
nscd
kann Namensauflösungsabfragen zwischenspeichern, beachtet jedoch nicht ttl (und ist daher standardmäßig deaktiviert).systemd-resolved
wird auch Einträge zwischenspeichern. Wenn keine von diesen konfiguriert ist, zwischenspeichern Linux-Hosts keine DNS-Antworten . (Browser wahrscheinlich auf der Anwendungsebene)