最近,我的一个 ISP 的 DNS 服务器出了问题。用支持台人员的话来说,“它并没有完全瘫痪,只是连接速度非常慢”。我的应用程序瘫痪了几个小时,因为它无法连接到其他机器上的关键服务。
虽然我的/etc/resolv.conf
文件中有冗余 DNS 服务器,但似乎这种缓慢还不足以让 DNS 客户端声明 DNS 服务器已关闭并回退到辅助 DNS 服务器。
我担心这种问题可能再次发生,所以我一直在阅读有关 Ubuntu DNS 配置的文章。似乎有一个超时选项,默认值为 5 秒,但这似乎在这里不起作用。
问题 1:是否有一个日志文件,我可以在里面查看 DNS 尝试并确认我的理解是超时没有触发?
问题 2:我需要做什么来实现这样的超时,并再次保护自己免受此类 DNS 问题的影响?
为了记录,我的/etc/resolv.conf
文件(已删除):
search localhost
nameserver IP.addr.ess.1
nameserver IP.addr.ess.2
nameserver IP.addr.ess.3
我正在运行 Ubuntu 9.10(是的,是的,我希望在 12 月有一个安静的时期来升级。)
答案1
您可以尝试将您的 DNS 服务器更改为 Google 的 DNS 服务器。但是,如果您的 ISP 阻止了外部 DNS 查询,则此方法可能不可行。
我建议您安装一个本地 DNS 转发/缓存名称服务器,例如pdnsd
,它具有高度可配置性。然后输入nameserver 127.0.0.1
;/etc/resolv.conf
负责pdnsd
将请求转发到其他名称服务器,或解析快如闪电从本地缓存中获取。您还可以配置超时,超过该时间后名称服务器将被视为无响应,因此它似乎符合您的需求。
Pdnsd 还支持并行访问多个 DNS 服务器,因此如果其中一个服务器速度慢,应用程序也不会变慢。它甚至支持故障转移服务器(例如,并行联系前两个服务器;如果它们没有响应,则联系另外两个,并监听所有四个服务器的响应,等等)。
根据aptitude
描述:
pdnsd can be used with applications that do dns lookups, eg on startup, and can't be
configured to change that behaviour, to prevent the often minute-long hangs
(or even crashes) that result from stalled dns queries.
安全注意事项:(pdnsd
自认)外部人员访问不安全:如果您的机器在互联网上,则需要配置防火墙以仅允许本地机器访问。