Änderungen an der /etc/hosts
Datei scheinen sofort wirksam zu werden. Ich bin gespannt auf die Umsetzung. Welche Magie wird verwendet, um diese Funktion zu erreichen?
networking
hosts
rudwna
quelle
quelle
Antworten:
Die Magie öffnet die
/etc/hosts
Datei und liest sie:Die
getaddrinfo(3)
Funktion, die die einzige Standardschnittstelle zur Namensauflösung ist, wird/etc/hosts
jedes Mal geöffnet und gelesen, wenn sie zur Auflösung eines Hostnamens aufgerufen wird.Anspruchsvollere Anwendungen, die nicht den Standard verwenden
getaddrinfo(3)
, aber/etc/hosts
die Mischung dennoch irgendwie ergänzen (z. B. derdnsmasq
DNS-Server)inotify(7)
, überwachen möglicherweise Änderungen an den/etc/hosts
Dateien und lesen sie nur dann erneut, wenn dies erforderlich ist.Browser und andere solche Anwendungen tun dies nicht. Sie öffnen und lesen
/etc/hosts
jedes Mal, wenn sie einen Hostnamen auflösen müssen, auch wenn sie den libc-Resolver nicht direkt verwenden, sondern dessen Funktionsweise auf andere Weise replizieren.quelle
Die Namensauflösung wird unter anderem von verwaltet
/etc/nsswitch.conf
. Hier ist ein Auszug:Beachten Sie die
hosts
Linie. Es heißt: "Wenn Sie einen Hostnamen auflösen, lesen Sie zuerst die/etc/hosts
Datei, um nach dem Hostnamen zu suchen. Wenn sie nicht gefunden wird, führen Sie eine DNS-Abfrage aus. Wenn sie nicht gefunden wird, versuchen Sie es mit dem lokal konfigurierten System-Hostnamen."Deshalb ist es hier so schnell. Beachten Sie, dass dies nicht von den Netzwerkdiensten auf dem Computer abhängt, sodass kein Dienst zum Neustarten oder erneuten Laden verfügbar ist.
quelle
/etc/hosts
. Warum wird keine zwischengespeicherte Version verwendet?