最近,我的一个 ISP 的 DNS 服务器遇到了麻烦。引用支持台人员的话说,它“并没有完全关闭,所以连接速度非常慢”。我的应用程序关闭了几个小时,因为它无法连接到其他机器上的关键服务。
虽然我的文件中有多余的 DNS 服务器/etc/resolv.conf
,但这种缓慢似乎不足以让 DNS 客户端声明 DNS 服务器已关闭,并回退到辅助 DNS 服务器。
我担心这类问题会再次发生,所以我一直在阅读 Ubuntu DNS 配置。似乎有一个默认为 5 seconds的超时选项,但这似乎在这里不起作用。
Q1:是否有日志文件可以让我看到 DNS 尝试并确认我理解超时没有触发?
问题 2:我需要做什么来实现此类超时,并再次保护自己免受此类 DNS 问题的影响?
作为记录,我的/etc/resolv.conf
文件(已删除):
search localhost
nameserver IP.addr.ess.1
nameserver IP.addr.ess.2
nameserver IP.addr.ess.3
Run Code Online (Sandbox Code Playgroud)
我正在运行 Ubuntu 9.10(是的,是的,我希望在 12 月有一个安静的时间来升级。)
您可以尝试使用 Google 的 DNS 服务器更改您的 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.
Run Code Online (Sandbox Code Playgroud)
安全说明:(pdnsd
自认)外人访问不安全:如果你的机器在互联网上,你需要配置防火墙只允许本地机器访问。