Domain-Name-System

了解 DNS 解析器之間的區別

  • August 1, 2017

介紹

在嘗試調試我們的 Intranet 本地的網路問題時,很明顯curl host nslookup並且dig行為不同。Wheredighost返回有問題的 URL 的 IP 地址,curlnslookup返回:

curl: (6) Could not resolve host: internal.site.company.com

nslookup: can't resolve 'internal.site.company.com`

語境

雖然這無關緊要,但本質上是為問題提供更多上下文,這個問題發生在 a 上和後面(準確地說,在兩者上docker-machine都使用 docker-machine 進行了測試)。它託管的和容器都在其. 無法解析名稱的機器也可以訪問所需 URL 的 IP 地址。如上所述,該地址是一個內部站點,我們的 DNS 伺服器也是內部的。該站點可從安裝的電腦訪問和解析。 virtualbox``parallels``docker-machine``/etc/resolv.conf``docker-machine

問題

這讓我想到了這些問題……

1)在引擎蓋下,dighost兩者不同的cURLnslookup什麼?

  1. 什麼可能阻止瀏覽器或curl以兩種方式解析 URLhostdig成功解析名稱?

設置

dig -v:DiG 9.11.1

host -v:host 9.11.1

curl -V:curl 7.49.1

碼頭工人版本:Version 17.06.0-ce-mac19 (18663) Channel: stable

Boot2Docker version 17.06.0-ce, build HEAD : 0672754

我希望我們的解析器庫將按順序使用主機規範中curl列出的名稱服務提供者。/etc/nsswitch.conf如果這不包括 DNS,則不會發生 DNS 解析。 nslookup沒有記錄使用此文件,但根據您的經驗,它似乎可以。通常,此數據由名稱服務記憶體守護程序記憶體。如果守護程序失敗,即使其他配置正確,您也可能會遇到此類問題。

host並且dig是純 DNS 查找程序。它們都僅通過 DNS 解析名稱。他們不會使用文件或其他非 DNS 提供商解析名稱。我希望他們/etc/resolv.conf直接使用這些資訊。

引用自:https://serverfault.com/questions/866183