答案1
超过 3 秒可能表示网络或配置存在问题。以下情况可能会导致超时:
- 丢弃数据包。第二个数据包通常在 3 秒延迟后发送。在某些堆栈上可调。
- 主 DNS 失败。DNS 堆栈将超时并在延迟后尝试下一个服务器,通常会转到第二个服务器。缓存值将立即返回(xx 毫秒)。
- UDP 对 DNS 的访问被阻止或由于数据包大小而失败。
尝试使用nslookup
指定的服务器来测试 DNS 访问。
答案2
我首先猜测是数据包丢失。
但您应确保让传入的 ICMP 响应返回到您的 DNS 服务器。如果您到 OpenDNS 的路径存在一些 MTU 问题(使用隧道或 VPN?)或者由于某种原因某个 DNS 服务器宕机,您应该会收到正确的 ICMP 消息。
还不要忘记 DNS 协议也使用 TCP 端口 53(例如 DNSSEC 应该使用它)。