Dan*_*Cat 7 domain-name-system linux-networking curl dig docker-machine
在尝试调试网络问题本地我们的内联网,很明显,curl host nslookup和dig不同的表现。凡dig与host返回有问题的URL,IP地址curl和nslookup回报:
curl: (6) Could not resolve host: internal.site.company.com
Run Code Online (Sandbox Code Playgroud)
和
nslookup: can't resolve 'internal.site.company.com`
Run Code Online (Sandbox Code Playgroud)
虽然这不应该的事情,在多予方面的问题的本质,这个问题上和后面发生的docker-machine(使用泊坞窗机上都进行测试virtualbox,并parallels要准确)。在docker-machine和容器它的主机都在他们所需的内部DNS服务器的正确IP地址/etc/resolv.conf。无法解析名称的机器也可以访问所需 URL 的 IP 地址。如上所述,地址是内部站点,我们的 DNS 服务器也是内部站点。该站点可从docker-machine安装的计算机访问和解析。
这让我想到了这些问题......
1) 在幕后,有什么dig和host做的与两者cURL和和不同nslookup?
2)什么可能阻止浏览器或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
Run Code Online (Sandbox Code Playgroud)
Bil*_*hor 11
我希望curl我们的解析器库将按/etc/nsswitch.conf顺序使用主机规范中列出的名称服务提供者。如果这不包括 DNS,则不会发生 DNS 解析。 nslookup没有记录使用此文件,但根据您的经验,它似乎可以。通常,此数据由名称服务缓存守护进程缓存。如果守护进程失败,即使其他配置正确,您也可能会遇到此类问题。
host并且dig是纯 DNS 查找程序。它们都仅通过 DNS 解析名称。他们不会使用文件或其他非 DNS 提供商解析名称。我希望他们/etc/resolv.conf直接使用这些信息。