我正在使用 dnscache 后面的 tinydns 来解析 LAN 上的计算机名称,就像在 Ubuntu 10.04 LTS 上安装的那样。时不时地,网络上的任何计算机都无法解析本地名称,这没有任何解释。似乎 tinydns 不再响应。重新启动服务器有时会有所帮助,但这不是我运行 Unix 服务器的方式。关闭 tinydns 有时似乎也有效,但并非总是如此。
我尝试运行本地 DNS 服务器的总体体验并不好,需要仔细调整 resolv.conf 文件,而且 tinydns 似乎会随机出现故障。如果其他人在使用 djbdns 时遇到问题,请告诉我。DNS 诊断提示也很有用。
更新:
快速检查日志会显示有关 I/O 故障的投诉,然后是有关无法绑定到给定地址的投诉。有时日志中没有任何报告,应用程序只是停止响应。
只是关于设置的一个说明,它本身存在问题。dnscache 在一个 IP 地址的 eth0 上运行,tinydns 最初在另一个 IP 地址的 eth0:0 上运行。(在 127.0.0.1 设置 tinydns 根本不起作用,尽管 djb 说应该可以。)但是,此设置(eth0:0)在重启时不起作用,因为 Ubuntu 在自动启动 eth0:0 时遇到了一些问题。将别名更改为 eth0:1 允许接口在重启时自动启动。对于一个看似简单的任务来说,这比预期的更具冒险性。
目前,我正在完全独立的服务器上尝试 tinydns,如果它稳定的话,我会报告。
答案1
调试这个并不是最容易的,特别是从 UDP 和 tinydns(硬编码端口 53)开始。
首先确保基本配置正确:
- 确保 dnscache 和 tinydns 在两个不同的 IP 地址上运行(这样它们就不会窃取彼此的套接字)
- 确保您的 127.0.0.1:53 是空闲的,即系统没有其他守护进程在那里监听(
netstat -n
) - 在 127.0.0.1 上运行 tinydns 并使用 手动查询
dig yr-authoritative-dom.com @127.0.0.1
。这必须始终可靠地工作 - 在公共 eth0 IP 地址上运行 dnscache。在 root/servers/ 目录中,将 yr-authoritative-dom.com 指向 127.0.0.1 。在 root/ip 中输入 192.168(或您查询的任何地址前缀)
如果此方法不起作用,请考虑以下可能性:
- 存在一些资源耗尽问题。尝试暂时禁用 dnscache 日志记录(重命名为“log/run”)并观察问题是否再次出现。
- 其他一些进程正在将 IP:53 套接字重新绑定到 dnscache 之外。