我遇到了一个问题,我的一台服务器需要很长时间才能查找主机名。这是一台 Ubuntu 12.04 机器,所以我尝试遵循新的resolvconf
指令。
在我的/etc/network/interfaces
文件中,我这样定义我的名称服务器:
auto eth0
iface eth0 inet static
address someaddress
netmask 255.255.255.0
gateway 198.58.103.1
dns-nameservers 74.14.179.5 72.14.188.5
在我的 中/etc/resolv.conf
,我看到了这些名称服务器,如下所示:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 74.14.179.5
nameserver 72.14.188.5
在另一个机器上,我resolv.conf
按照主机安装帮助文件的指示直接编辑了。它看起来像这样:
domain members.linode.com
search members.linode.com
nameserver 72.14.179.5
nameserver 72.14.188.5
options rotate
第二个盒子在主机名查找方面没有问题,并且响应非常快。
没有domain
andsearch
指令会导致我的查找速度变慢吗?我说的慢,是指查找主机的 IP 地址需要 5 到 15 秒的时间。
如果我这样做,time dig @72.14.179.5 www.google.com
我会很快得到答复,“实际”时间为 0.170 秒。
如果我执行 a,ping google.com
即使我在一次响应后退出 ping,我也会得到 10.078 秒的实际时间。如下所示:
time ping google.com
PING google.com (74.125.228.37) 56(84) bytes of data.
^C64 bytes from iad23s06-in-f5.1e100.net (74.125.228.37): icmp_req=1 ttl=54 time=34.2 ms
--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 34.291/34.291/34.291/0.000 ms
real 0m10.078s
user 0m0.001s
sys 0m0.005s
答案1
将dns-search
和dns-domain
指令添加到您的/etc/network/interfaces
文件中。
答案2
您是否已加载 ipv6 内核模块?
如果有的话,您的系统将首先搜索 AAAA 记录,如果返回记录,它将优先使用该记录而不是 A 记录,问题是请求查找的服务将尝试使用 AAAA 答案进行连接,而您使用的 IP 堆栈可能不支持该答案。
禁用 ipv6 内核模块,这个问题就消失了。
但可能并非如此。您始终可以在本地安装 dnsmasq,这样 /etc/resolv.conf 中的名称服务器就设置为查找 localhost,dnsmasq 将查找上游名称服务器并缓存结果,因此第一个名称服务器会很慢,但所有后续名称服务器都会快如闪电。
答案3
我无法让 dns-domain 指令工作。我还想在末尾添加“options rotate”。我完全赞成动态生成此文件,但需要支持来自接口文件的所有内容。我再次将 resolv.conf 设为文件而不是符号链接。
答案4
我在 12.04 上遇到了同样的问题,我通过这样做解决了它
在网络管理器小程序上编辑连接 --> 自动以太网(或无线) --> IPV4 选项卡 --> 选择方法“仅自动(DHCP)地址”
输入 DNS 服务器 - 8.8.8.8
输入搜索域 - google-public-dns-a.google.com(您将通过 8.8.8.8 上的主机查找获得此信息)并保存
就是这样,不再需要“解析主机”
如果您没有 ipv6,也许您也可以在 Ipv6 选项卡中忽略它,但我没有看到这样做有任何显著的变化。