除了 DNS 和 /etc/hosts 之外,Mac 上的主機資訊還可能來自哪裡?

除了 DNS 和 /etc/hosts 之外,Mac 上的主機資訊還可能來自哪裡?

所有姓名和地址均已更改。 example.com 是我擁有的網域。

% ping foo.example.com
PING foo.example.com (1.1.1.1)

1.1.1.1是一個我從未聽過的IP位址。其他程式也一樣(ssh、curl)

% host foo.example.com
foo.example.com has address 2.2.2.2

2.2.2.2 是正確的IP 位址。

% grep foo /etc/hosts
(empty)

這是在 Mac 上。在 Linux 上,我會尋找 /etc/nsswitch.conf 來取得其他主機資訊來源。 Mac 上有類似的東西嗎?

答案1

macOS 有一個複雜的範圍 DNS 路由系統,用於 VPN 等功能。因此,如果您現在有一個 VPN 連線可以“工作”,那麼對您工作的網域的查詢可能會傳送到工作中的 DNS 伺服器。

要查看整個列表,請運行:

scutil --dns

若要像系統一樣查詢 DNS,請使用:

dns-sd -G v4v6 example.com
dns-sd -q example.com 255 255

(您必須按 Ctrl-C 才能退出dns-sd)。

hostdig和命令nslookup是用於 DNS 伺服器故障排除的舊 unix 命令,它們包含自己的 DNS 解析器程式碼,且不使用系統的函式庫。因此,如果您不指定希望他們使用哪個伺服器,他們只會從 auto generated 中取得伺服器/etc/resolv.conf,而 auto generated 只會填入用於無範圍查詢的預設伺服器。但是像這樣的工具ping可能只是呼叫gethostbyname(3)使用系統範圍內的 DNS 路由。

編輯補充:我還應該提到,macOS 可以透過多種其他方式取得主機名稱到 IP 位址解析訊息,包括:

  1. mDNS(Apple Bonjour / IETF ZeroConf)
  2. 開放目錄(LDAP 上的 Apple 模式)
  3. 其他LDAP
  4. 活動目錄
  5. 勝利
  6. NetBIOS 名稱服務
  7. NIS(以前稱為 YellowPages/yp;Sun/Oracle 網路資訊服務)

您可以使用dscl命令列工具或目錄實用程式應用程式編輯這些設置,該應用程式隱藏在:

/System/Library/CoreServices/[Applications]/Directory\ Utility.app

相關內容