bitte erklären Sie mir, wie DNS unter Linux mit Befehlen und auch mit Debugging funktioniert

bitte erklären Sie mir, wie DNS unter Linux mit Befehlen und auch mit Debugging funktioniert

Ich möchte verstehen, wie der Ablauf abläuft, wenn wir eine URL in den Browser eingeben, und wie man mit Linux-Befehlen debuggt, wenn etwas nicht funktioniert.

Antwort1

[Ich] möchte verstehen, wie der Ablauf abläuft, wenn wir eine URL in den Browser eingeben

Siehe zum Beispiel

und wie man debuggt

Die nützlichsten Werkzeuge sind wahrscheinlich

  • tcpdump.
  • nslookupoder seine moderneren Äquivalente hostund dig.
  • wgetoder curl. Lesen Sie die Manpages, um nützliche Optionen zu finden wie
    • --server-response,
    • --debug,
    • --verbose,
    • --no-dns-cache

Sie müssen jedoch zuerst die lokale Namensauflösung verstehen, da es Namensdienste gibt, die vor DNS verwendet werden können (z. B. lokale Hostdateien und in einigen seltenen Konfigurationen auch andere Netzwerkdienste wie NBNS, YP usw.). Ich würde mit dem Lesen beginnenman resolv.conf

Antwort2

Das Linux-System wird mit einer Reihe von Systembibliotheken ausgeliefert, darunter eine Implementierung von sys/sockets.hfür C-Programme, die dieBerkeley Sockets APIUndPOSIXStandards. Die POSIX-Spezifikation enthält die Definition einesMethodeaufgerufen, getaddrinfo()das die IP-Adresse des Hosts an ein Programm zurückgibt, das sie benötigt. Jede Programmierlaufzeit (z. B.Python,perl,php, etc.) implementiert eigene Schnittstellen, über die siegetaddrinfo()aber die meisten von ihnen verwenden tatsächlich die Methode des Kernels, um eine DNS-Anfrage tatsächlich zu verarbeiten.

Eine Sockets-Verbindung umfasst eine Reihe von Methodenaufrufen, darunter socket(), bind(), connect() usw. Siehe meine AntwortHierdavon ab, wie diese Anrufe koordiniert werden, um eine Netzwerkverbindung herzustellen.

Die Fehlerbehebung bei der DNS-Auflösung auf der Clientseite läuft nur auf Server und Cache hinaus. Der Server antwortet mit der ihm bekannten Zieladresse, aber wenn es aus irgendeinem Grund (Geolokalisierung, Blacklisting usw.) nicht die gewünschte Adresse ist, können Sie den Server zu einem Server mit der gewünschten Adresse wechseln. Wenn Sie eine Verbindung zu einem Server mit der gewünschten Adresse herstellen, aber trotzdem ein schlechtes Ergebnis erhalten, kann dies an einer zwischengespeicherten Antwort auf Ihrem Host oder Upstream an einem Router oder Caching-Proxy liegen.

verwandte Informationen