請告訴我 DNS 在 Linux 中如何透過命令和調試工作

請告訴我 DNS 在 Linux 中如何透過命令和調試工作

我想了解當我們在瀏覽器中輸入一些 URL 時發生的流程,以及如何使用 Linux 命令調試某些內容

答案1

[I] 想了解當我們在瀏覽器中輸入一些 URL 時發生的流程

請參閱範例

以及如何調試

最有用的工具可能是

  • tcpdump
  • nslookup或更現代的等價物hostdig.
  • wget或者curl。閱讀他們的手冊頁以找出有用的選項,例如
    • --server-response,
    • --debug,
    • --verbose,
    • --no-dns-cache

不過,您需要先了解本機名稱解析,因為在 DNS 之前可能會使用一些名稱服務(例如本機主機文件,以及在一些罕見的設定中、其他網路服務,例如 NBNS、YP 等)。我會從閱讀開始man resolv.conf

答案2

Linux 系統附帶了許多系統函式庫,包括sys/sockets.hC 程式的實現,它實現了伯克利套接字 APIPOSIX標準。 POSIX 規範包括以下定義:方法呼叫getaddrinfo()它將主機的 IP 位址傳回給需要它的程式。每個程式運行時(例如Python,珀爾,php等)實作自己的接口,透過它們調用取得地址資訊()但大多數實際上使用核心的方法來實際處理 DNS 請求。

套接字連接涉及許多方法調用,包括socket()、bind()、connect()等。這裡關於如何協調這些呼叫以建立網路連接。

客戶端 DNS 解析故障的解決僅涉及伺服器和快取。伺服器將用它知道的目的地地址進行回應,但如果由於某種原因(地理位置、黑名單等)它不是您想要的地址,您可以將伺服器更改為具有您想要的地址的伺服器。如果您使用所需位址連接到伺服器,但仍會得到錯誤結果,則可能是由主機上或路由器或快取代理上游的快取回應所引起的。

相關內容