Wie arbeiten /etc/hosts
DNS unter Linux zusammen, um Hostnamen in IP-Adressen aufzulösen?
- Wenn ein Hostname in aufgelöst werden kann
/etc/hosts
, wird DNS danach angewendet/etc/hosts
, um den Hostnamen aufzulösen, oder wird die aufgelöste IP-Adresse/etc/hosts
als "Hostname" behandelt, um sie rekursiv aufzulösen? In meinem Browser (Firefox und Google Chrome), wenn ich hinzufüge zu
/etc/hosts
:127.0.0.1 google.com www.google.com
Wenn Sie www.google.com in die Adressleiste des Browsers eingeben und die Eingabetaste drücken, wird keine Verbindung zur Website hergestellt. Nachdem ich diese Zeile entfernt habe
/etc/hosts
, kann ich eine Verbindung zur Website herstellen. Bedeutet dies, dass/etc/hosts
DNS zum Auflösen von Hostnamen überschrieben wird?Nachdem ich die Zeile erneut hinzugefügt habe
/etc/hosts
, kann ich auch nach dem Aktualisieren der Webseite eine Verbindung zur Website herstellen. Warum/etc/hosts
bewerben Sie sich nicht erneut, damit ich keine Verbindung zur Website herstellen kann?
Vielen Dank.
/etc/hosts
die lokal definierten Nameserver vollständig . Es ist ziemlich verwirrend, das erste Mal Zeuge zu werden. (Sieh dich an, Chromium-basierte Browser!)/etc/hosts
DNS-Server zu respektieren : ( github.com/Eloston/ungoogled-chromium ). Installation unter macOS mit Homebrew :brew cask install eloston-chromium
.Antworten:
Dies wird durch die NSS (Name Service Switch) Konfiguration dh diktierte
/etc/nsswitch.conf
Datei -hosts
Richtlinie. Zum Beispiel auf meinem System:Hier
files
bezieht sich auf die/etc/hosts
Datei unddns
auf das DNS-System. Und wie Sie sich vorstellen können, gewinnt jeder, der zuerst kommt .Sehen Sie sich auch
man 5 nsswitch.conf
an, um mehr darüber zu erfahren.Als Nebenwirkung , die NSS - Host Auflösung Reihenfolgen , die Verwendung zu folgen
getent
mithosts
als Datenbank zB:quelle
systemd.resolver
auf Auflösungen aus? Wo passen NIS und LDAP in das Auflösungssystem? Welche Reihenfolge folgt einem MacOS-System oder einem Windows-System?.Um nur Ihre letzte Frage zu beantworten:
/etc/hosts
Wird nicht sofort erneut angewendet, dafirefox
der zuletzt gespeicherte Hostname zwischengespeichert wirdgoogle.com
. wenn Sie es wollen immer wieder holen, werden Sie setzen müssen ,network.dnsCacheExpiration
um0
inabout:config
. Weitere Infos (wenn auch etwas veraltet) hier . Entschuldigung, wenn dies offtopic ist.Als Nebenbemerkung verwenden viele Programme nicht den Standard-Resolver (
getaddrinfo(3)
,getnameinfo(3)
[1]), weil er scheiße ist .Erstens ist die Schnittstelle nicht asynchron. Jedes mäßig komplexe Programm muss einen separaten Thread erzeugen, der genau das tut,
getaddrinfo()
und dann sein eigenes Protokoll erfinden, um mit ihm zu kommunizieren (und nicht einmal eingehengetaddrinfo_a()
, das nach Abschluss ein Signal sendet , also ist es noch schlimmer).Zweitens ist die Resolver-Implementierung in
glibc
(der Standard-C-Bibliothek unter Linux) schrecklich. Sie erwartet, dass Sie zufällige dynamische Objekte überdlopen()
Ihren Rücken in den Adressraum ziehen und es unmöglich machen, sie in irgendeiner Weise zu enthalten oder statisch zu verwenden verknüpfte ausführbare Dateien.Da viele Programme nicht direkt die Standard - Resolver verwenden, auch stören sie nicht ihr Verhalten genau zu replizieren, und einige oder alle ignorieren
/etc/resolv.conf
,/etc/hosts
,/etc/nsswitch.conf
oder/etc/gai.conf
.[1] und erwähne nicht einmal den nicht wiedereintretenden ipv4-only
gethostbyname()
, der seit Ewigkeiten veraltet war.quelle
google = GHBN("google.com"); facebook = GHBN("facebook.com")
, möglicherweise beides habengoogle
undfacebook
die Adresse von enthaltenfacebook.com
. Wenn die beiden Anrufe in unterschiedlichen Threads getätigt werden, ist es noch lustiger: Sie können mit einer Adresse enden, die halb Google und halb Facebook oder kompletter Müll ist.gethostbyname()
jetzt ersetzt ?getaddrinfo
ist die Standardfunktion dafür, ist aber selbst brokrn, wie ich bereits erklärt habe, so dass es nicht wie von Browsern oder anderen realen Apps verwendet wird.Die Datei
/etc/hosts
und der DNS arbeiten nicht zusammen. Sie bieten unabhängige Auflösungen von Namen (Netzwerknamen).Der Kleber, der sie verbindet, befindet sich in
/etc/nsswitch.conf
Linux-Systemen . In/etc/netsvc.conf
für AIX-Server, im System für Windows und könnte in MacOS-Systemen mitlookupd -configuration
(Suche nach LookupOrder, ähnlich wie :) aufgelistetCache FF DNS NI DS
werden.Die tatsächliche Reihenfolge wird komplex und normalerweise kompliziert, da jeder Namensauflösungsdienst in andere Auflösungsebenen schauen kann (und dies oft auch tut). Like
dnsmasq
(ein leichter DNS-Server im Allgemeinen bei127.0.0.1:53
oder::1:53
(oder beides)) liest und enthält normalerweise den/etc/hosts
Dateiinhalt. Oder likesystemd.resolver
(ein grundlegender Resolver, der nur nicht gepunktete Namen wie auflösen solltemycomputer
) ruftmycomputer.here.dev.
unter bestimmten Bedingungen direkt DNS-Auflösungen für gepunktete Namen ( ) auf.Im Allgemeinen werden Dienste der Reihe nach aufgerufen, und der erste, der nicht fehlschlägt, gewinnt und wird als korrekte Adresse akzeptiert. Die allgemeine Grundreihenfolge lautet:
/etc/hosts
(Datei), mDNS (nicht gepunktete Namen), DNS, NIS, NIS +, LDAP. In einigen Linux-Systemen gibt es eine letzte Lösung für den Computerhostname
im Dienstmyhostname
Zum Beispiel in diesem System (von
cat /etc/nsswitch
):Beachten Sie, dass der sehr alte
order
Eintrag (glibc 2.4 und früher) wie folgt festgelegt wurde/etc/host.conf
:Gilt nur für den Dateinamensdienst
/etc/hosts
.Die Auswirkungen auf diesen (Linux-) Client-Computer in Bezug auf NIS und LDAP werden (normalerweise) vom verwendeten DNS-Server (Binden, Ungebunden usw.) gesteuert.
so:
Keiner.
Wenn ein Hostname in aufgelöst werden kann
/etc/hosts
,DNS
gilt dies nicht (wenn sich Dateien vor DNS befinden).noch ist die aufgelöste IP - Adresse als „Host - Name“ behandelt.
Es ist einfach: die aufgelöste Adresse.
Browser
Ein Browser kann eine beliebige Methode verwenden, um einen Namen aufzulösen (nachdem er seinen Cache mit aufgelösten Namen überprüft hat). Nur wenn eine vom System bereitgestellte Methode verwendet wird, gilt die oben angegebene Reihenfolge. Der Browser kann wie jedes Programm jeden DNS-Server direkt kontaktieren.
Wenn das System hat , um
/etc/hosts
vorDNS
, bedeutet dies , dass ein Eintrag in dieser Datei Vorrang nehmenDNS
Auflösung Service.So:
Ja (wenn der Browser die vom System bereitgestellte Auflösung verwendet).
Nur bis der interne Cache des Browsers für diesen bestimmten Namen gelöscht wird (oder eine Zeitüberschreitung auftritt), wird dieser Name erneut außerhalb des Browsers gesucht.
Wenn der Name des Browsers im Cache aufgelöst ist, verwendet der Browser ihn erneut.
Verwenden Sie diese Option, um den Cache zu leeren .
Oder schließen Sie einfach (warten Sie eine Weile) und starten Sie den Browser neu.
quelle