每当我在 CentOS 服务器上执行任何需要 DNS 查找的操作时,我都会收到错误消息。例如:
[root@15557 etc]# wget http://www.whitehouse.gov/sites/default/files/rss_viewer/birth-certificate-long-form.pdf --2011-05-03 20:55:35-- http://www.whitehouse.gov/sites/default/files/rss_viewer/birth-certificate-long-form.pdf 解析 www.whitehouse.gov... 失败:名称解析暂时失败。 wget:无法解析主机地址“www.whitehouse.gov”
如果我重新启动服务器,这个问题就会消失短的每次都会出现这种情况,但一个小时左右后总会恢复。如果我更改 中列出的名称服务器 IP resolv.conf
,问题仍未解决,即使我用 Google 等常用名称服务器替换它们也是如此8.8.8.8
。如果我在更改 后刷新主机缓存resolve.conf
,问题也无法解决。重新启动服务器后, 会resolv.conf
更改回其默认值(我猜是某些 DHCP 所致)。
答案1
这可能是由 DHCP 服务器引起的问题 - 实际上,是由网络上的恶意或另一个配置错误的 DHCP 服务器引起的。
大概,这是发生的事情:当你的服务器启动时,它设法获得准确的参数 (IP 地址、网关、DNS 服务器等) 从合法的 DHCP 服务器获取 IP 地址,因此,在租约续订之前,您不会遇到任何问题。经过相对较长的时间短的一段的时间 (这取决于 dhcp 客户端和服务器配置),DHCP 客户端将尝试通过联系合法的 DHCP 服务器(通过单播传输)来续订租约。如果由于某种原因失败,或者您的 dhcp 客户端由于某种原因没有收到合法 DHCP 服务器的响应,它将进入重新绑定状态并广播延长租约时间的请求。如果流氓/另一个配置错误的 DHCP 服务器设法先做出响应,它可能会向您的 DHCP 客户端发送不准确参数 - 例如“错误”的 DNS 服务器地址,结果您将无法解析主机名。
如果我的猜测是正确的,重新启动服务器不会总是解决问题,因为有时恶意 DHCP 服务器可能会首先响应,从而导致您遇到提到的问题。
无论如何,请尝试配置静态 IP 地址、禁用 DHCP 并手动设置 DNS 服务器。此外,除了您正在使用的 DHCP 服务器之外,您还应该检查网络上是否正在运行任何其他 DHCP 服务器。
答案2
就我而言,我为错误的接口设置了 fw 规则。因此端口 53 未打开,服务器无法发出 dns 请求