了解 DNS 解析器之間的區別
介紹
在嘗試調試我們的 Intranet 本地的網路問題時,很明顯
curl
host
nslookup
並且dig
行為不同。Wheredig
和host
返回有問題的 URL 的 IP 地址,curl
並nslookup
返回: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)在引擎蓋下,
dig
與host
兩者不同的cURL
是nslookup
什麼?
- 什麼可能阻止瀏覽器或
curl
以兩種方式解析 URLhost
並dig
成功解析名稱?設置
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
直接使用這些資訊。