为什么找不到 FQDN 时域名会被丢弃

为什么找不到 FQDN 时域名会被丢弃

我在 Kali Linux 和 AIX 5.x 中看到了这种行为:

/etc/resolv.conf的内容:

domain biman.net
nameserver 192.168.1.126
#nameserver 192.168.5.1

当使用短名称(例如“tttt”)搜索主机时,第一个 DNS 查询是 tttt.biman.net。DNS 中不存在“tttt”记录。第二个查询没有域名。为什么?我该如何阻止它?

查看证据——查询:

nslookup -q=AAAA ttttt
Server:     192.168.1.126
Address:    192.168.1.126#53

** server can't find ttttt: SERVFAIL

证据---tcpdump:

 14:42:56.073872 IP 192.168.1.119.58163 > 192.168.1.126.53: 58597+ 
 AAAA? ttttt.biman.net. (33)
 14:42:56.074407 IP 192.168.1.126.53 > 192.168.1.119.58163: 58597 
 NXDomain* 0/1/0 (105)
 14:42:56.074655 IP 192.168.1.119.34699 > 192.168.1.126.53: 32815+ 
 AAAA? ttttt. (23)
 14:42:56.074903 IP 192.168.1.126.53 > 192.168.1.119.34699: 32815 
 ServFail 0/0/0 (23)

答案1

通常的行为自由解析对于单标签查询是:

  1. search将指令(或过时的指令)中列出的域附加domain到标签并执行 DNS 查询。
  2. 对顶级域执行 DNS 查询。

然而,至少在glibc版本 2.14 或更高版本(参见resolv.conf 手册页),第二部分可以这样抑制:

options no-tld-query

/etc/resolv.conf

编辑:如果您通过以下方式解析主机名,则此解决方案有效,更准确地说是通过libnss_dns名称服务。假设您有:

hosts: files dns

在你的/etc/nsswitch.conf文件(大多数 Linux 桌面发行版都配置了许多其他名称服务),您可以no-tld-query使用以下命令检查选项:

getent hosts name_of_host

nslookup是一种绕过名称服务交换机并独立执行 DNS 查询的工具。如您的示例所示,此解决方案不适用于 nslookup,但适用于大多数其他程序。

相关内容