我在 Windows Server 2012 上有一个带有活动目录和 DNS 的服务器,它有以下子域:
ac:alm.local<---10.0.0.3
DNS 主机:
javi.a.alm.local <---- 10.0.0.20
当我在 Windows 中解决时:
nslookup javi.a
server: localhost
address: 127.0.0.1
name: javi.a.alm.local
address: 10.0.0.20
但是当我在 debian 中时:
nslookup javi.a
Server: 10.0.0.3
Address: 10.0.0.3 # 53
** server can't find javi.a: NXDOMAIN
为什么没有解决??
resolv.conf:
nameserver 10.0.0.3
search alm.local
答案1
默认情况下,Linux 解析器不会将search
域应用于已包含点的查询名称。因此javi.a
将被视为 FQDN,并且不会将域alm.local
附加到其中。
您可以使用 更改此行为ndots
option
。这表示名称中可以包含的最小点数,以将其视为 FQDN。默认为1
。
在执行此操作之前,您还应该考虑手册页中的警告resolv.conf(5)
。
解析器查询少于点 点(默认值为 1)将依次尝试使用搜索路径的每个组件,直到找到匹配项。对于具有多个子域的环境,请阅读选项 ndots:n以避免中间人攻击和根 DNS 服务器不必要的流量。请注意,如果列出的域的服务器不是本地的,则此过程可能会很慢,并且会产生大量网络流量,并且如果其中一个域没有可用的服务器,则查询将超时。
以及以下文档options ndots
:
设置必须出现在名称中的点数的阈值查询(3)(见解析器(3))才会进行初始绝对查询。n 的默认值为 1,这意味着如果名称中有任何点,则在向其附加任何搜索列表元素之前,将首先尝试将该名称作为绝对名称。此选项的值默认限制为 15。
(请注意,这意味着在尝试将名称作为 FQDN 之后,将使用搜索域进行尝试,但实际上这实际上不会发生。它根本没有使用搜索域进行尝试。这就是您今天在这里发帖的原因。)
因此您可以在 resolv.conf 中添加:
options ndots:2
现在,带有一个点的名称将附加搜索域,而带有两个或更多点的名称则不会附加。如手册页所述,如果需要,您可以将其设置为最高 15。