在resolv.conf中搜索和域=在Ubuntu上查找速度慢

我有一台运行ubuntu 10.04服务器的机器.我使用curl和wget等工具连接局域网外的(某些)站点时,已经开始长时间(5-10秒)延迟.

使用tcpdump和wireshark,我发现在设置连接时正在进行的DNS查找中存在问题:

当我跑:

wget www.site1.com

我看到以下行为:

LOOKUP: AAAA www.site1.com       
        # => fail,no delay,site1 doesn't have an IPv6 AAAA record
LOOKUP: AAAA www.site1.com.mydomain.lan
        # => fail,BIG DELAY,crazy domain doesn't exist
LOOKUP: A www.site1.com
        # => success,resolves as expected (site1 has IPv4 A record)
CONNECTION PROCEEDS ...

我的设置

我的服务器的resolv.conf看起来像这样:

nameserver 192.168.0.1  # my router
domain mydomain.lan    # made up domain name,for my lan
search mydomain.lan

我的服务器的hosts文件如下所示:

127.0.0.1       localhost.localdomain   localhost
192.168.0.10    server1.mydomain.lan   server1
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

决议?

为什么我的resolv.conf搜索列表用于构造第二个查找的名称,当resolv.conf手册页显示它仅用于查找主机名(无点)时:

“Resolver queries having fewer than ndots dots (default is 1) in them
will be attempted using each component of the search path in turn
until a match is found.”

我的印象是,第二次查找是错误的,根本不应该执行…

如果我从resolv.conf中删除域和搜索行,则不再进行第二次查找,并且我的延迟消失了.

(另外,如果我强制wget只处理IPv4,AAAA查找没有完成,因此延迟消失):

wget --inet4-only www.site1.com
此行为是设计使然.

IPv6是首选 – 因此首先确定AAAA术语中的资源状态. NXDOMAIN响应返回 – 因此客户端认为需要附加搜索路径.

请注意,您所做的ndots评论是正确的 – 但不是整个故事.如果ndots数字高于要查询名称(如果它是单个标签名称,在这种情况下),则查询行为的唯一区别是附加后缀的查询将在尝试原始名称之前发生.由于您已经超过了ndots阈值,因此首先尝试使用该名称.请参见手册页:

The default for n is 1,meaning that if there are any dots in a name,the name will be tried first as an absolute name before any search list elements are appended to it.

查询失败,因此必须使用搜索列表.请注意wget http:// site1 /的查询行为的差异.

你所看到的是预期的行为 – 我认为你需要解决的是导致这种缓慢查找的因素的汇合.

>修复您的DNS服务器,或修复它正在递归的上游.递归者应该在尝试查找不存在的TLD时轻松缓存从根获取的NXDOMAIN.由于关闭IPv6修复它,您可能在路径中有一个DNS服务器,当涉及AAAA查找时,该服务器在缓存时失败.尝试将解析器更改为8.8.8.8以进行验证.>停止为您显然无法进行查找的DNS区域添加搜索路径.如果您的DNS服务器对该区域具有权威性(这是该搜索设置有用的必要条件,因为它不是公共层次结构中的有效名称),它将立即响应.您可能不需要该搜索配置 – 但将其设置为将要解析的内容,以便它不会尝试从计算机的主机名中猜出它.搜索com应该做得很好.

相关文章

1.安装过程出现0x00000000指令引用的0x00000000内存该内存不能为written 如果你安装的是inux系统 需要在...
写在全面:如果根据以下教程涉及到只读文件需要更改文件权限才能需修改文件内容,参考我的另一篇博客:...
写在前面:以下步骤中需要在终端输入命令,电脑端查看博客的朋友可以直接复制粘贴到终端,手机端查看的...
ubuntu16.04和18.04更换国内源 写在前面:安装好ubuntu双系统后,默认的软件更新源是国外的,在国内使用...
ubuntu双系统启动时卡死解决办法(在ubuntu16.04和18.04测试无误) 问题描述: 在安装完ubuntu双系统后...
又来造轮子了。。。。。。。。。。。。。。。。 今天使用w3af向文件中写入的时候,发现没有write权限,...