相关疑难解决方法(0)

DNS 查找有时需要 5 秒

我有一个运行 Debian Wheezy 的虚拟机,即使解析器立即回复,某些主机名查找也需要几秒钟才能完成。奇怪的是,查找getaddrinfo()会受到影响,但gethostbyname()不会。

我已经切换到 Google 解析器以排除本地解析器损坏的可能性,所以我/etc/resolv.conf看起来像:

search my-domain.com
nameserver 8.8.4.4
nameserver 8.8.8.8
Run Code Online (Sandbox Code Playgroud)

nsswitch.conf的线路:

hosts: files dns
Run Code Online (Sandbox Code Playgroud)

而我的/etc/hosts不包含任何异常。

如果我尝试telnet webserver 80,它会在获得名称解析之前挂起几秒钟。的ltrace输出[1]示出了悬挂在一个getaddrinfo()呼叫:

getaddrinfo("ifconfig.me", "telnet", { AI_CANONNAME, 0, SOCK_STREAM, 0, 0, NULL, '\000', NULL }, 0x7fffb4ffc160) = 0 <5.020621>
Run Code Online (Sandbox Code Playgroud)

然而,tcpdump显示名称服务器立即回复,并且只有在第二次回复时才telnet解锁。回复看起来相同:

05:52:58.609731 IP 192.168.1.75.43017 > 8.8.4.4.53: 54755+ A? ifconfig.me. (29)
05:52:58.609786 IP 192.168.1.75.43017 > 8.8.4.4.53: 26090+ AAAA? ifconfig.me. (29)
05:52:58.612188 IP 8.8.4.4.53 > …
Run Code Online (Sandbox Code Playgroud)

linux dns

12
推荐指数
2
解决办法
1万
查看次数

标签 统计

dns ×1

linux ×1