![服务器的 DNS 无法解析第三方 Web 服务 URL](https://linux22.com/image/707829/%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%20DNS%20%E6%97%A0%E6%B3%95%E8%A7%A3%E6%9E%90%E7%AC%AC%E4%B8%89%E6%96%B9%20Web%20%E6%9C%8D%E5%8A%A1%20URL.png)
今天,我们的一个项目遇到了一个奇怪的问题:VPS 服务器无法访问第三方 Web 服务,因为它无法解析其域。当我通过 SSH 连接到服务器并运行dig
、curl
、traceroute
或ping
Web 服务的域时,我收到错误Could not resolve host: %web.service.url%
。
有趣的是,同一托管公司位于同一地区(澳大利亚)的另一台服务器也存在完全相同的问题,因此这肯定是一个更广泛的问题,而不仅仅是一台特定的服务器。从本地计算机 ping 同一服务可以正常工作,其他服务器也没有这个问题。技术支持人员几个小时都没能帮助我们,他们最后一条消息是:
“您的选择是联系您正在使用的 DNS 提供商,因为 DNS 服务器没有为该域提供任何记录。”
我不确定 DNS 提供商是什么,为什么听起来好像我们在使用一些自定义的 DNS 提供商,而不是他们为 VPS 服务器提供的 DNS 提供商。这可能是他们和澳大利亚 ISP 之间的问题吗?
最重要的是,除了将所有东西都转移到另一家托管服务提供商之外,我们现在还有什么选择?目前,切换第三方 Web 服务不是一个选择。
编辑:dig %web.service.url%
以下是从服务器运行时 的结果:
; <<>> DiG 9.9.5-4.3ubuntu0.1-Ubuntu <<>> %web.service.url%
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 35626
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1500
;; QUESTION SECTION:
;%web.service.url%. IN A
;; Query time: 1074 msec
;; SERVER: %server.ip.address%#53(%server.ip.address%)
;; WHEN: Thu Jul 20 09:19:44 UTC 2017
;; MSG SIZE rcvd: 51
答案1
您已经屏蔽了实际进行测试所需的所有重要信息。如果 VPS 服务器使用 VPS 主机提供的 DNS 服务器,并且无法返回记录,则问题应该出在 VPS 主机上。
一个简单的解决方法是更改 VPS 服务器上的 DNS 设置,以便使用另一个 DNS 服务器。我通常使用 Google 的 DNS 服务器8.8.8.8
:8.8.4.4