如果没有指定 TLD,为什么 getent 默认为 .station?

如果没有指定 TLD,为什么 getent 默认为 .station?

在我当前的设置中,我有一个dnsmasq在我的家庭服务器 (Void Linux) 上运行的实例和 3 个使用它作为默认 dns 的 GNU/Linux 设备(1 个 Manjaro、1 个 Arch、1 个 Linux Mint 20.1)。

由于看似不相关的问题,我正在使用 测试 mdns 名称解析getent,并且我注意到,通过查看dnsmasq日志和运行,如果尚未指定域,strace getentgetent会自动附加顶级域。.station

getent hosts home-server结果是

dnsmasq[24671]: query[AAAA] home-server.station from 192.168.0.6
dnsmasq[24671]: forwarded home-server.station to 9.9.9.9
dnsmasq[24671]: query[AAAA] home-server.station from 192.168.0.6
dnsmasq[24671]: forwarded home-server.station to 9.9.9.9
dnsmasq[24671]: query[AAAA] home-server.station from 192.168.0.6
dnsmasq[24671]: forwarded home-server.station to 9.9.9.9
dnsmasq[24671]: forwarded home-server.station to 95.216.24.230
dnsmasq[24671]: forwarded home-server.station to 89.233.43.71
dnsmasq[24671]: forwarded home-server.station to 78.46.244.143
dnsmasq[24671]: forwarded home-server.station to 146.255.56.98
dnsmasq[24671]: forwarded home-server.station to 78.46.244.143
dnsmasq[24671]: forwarded home-server.station to 146.255.56.98
dnsmasq[24671]: forwarded home-server.station to 78.46.244.143
dnsmasq[24671]: forwarded home-server.station to 146.255.56.98
dnsmasq[24671]: forwarded home-server.station to 45.90.57.121
dnsmasq[24671]: forwarded home-server.station to 80.67.169.40
dnsmasq[24671]: forwarded home-server.station to 104.244.78.231
dnsmasq[24671]: reply home-server.station is NXDOMAIN
dnsmasq[24671]: query[AAAA] home-server from 192.168.0.6

在 dnsmasq 日志上和

socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, IPPROTO_IP) = 4
setsockopt(4, SOL_IP, IP_RECVERR, [1], 4) = 0
connect(4, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.0.100")}, 16) = 0
poll([{fd=4, events=POLLOUT}], 1, 0)    = 1 ([{fd=4, revents=POLLOUT}])
sendto(4, "\2\17\1\0\0\1\0\0\0\0\0\0\vhome-server\7station"..., 37, MSG_NOSIGNAL, NULL, 0) = 3

呼叫getentstrace.

我无法找到有关.stationTLD 的任何信息。

有谁知道为什么getent会有这种默认行为,它.station来自哪里?

/etc/nsswitch.conf hosts在 Manjaro 上的线路

hosts: files mymachines mdns4_minimal [NOTFOUND=return] resolve dns mdns4 myhostname

在薄荷

hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname

答案1

getent hostshosts执行 行nsswitch.conf告诉它执行的操作。表示strace它正在向 192.168.0.100 发送单播 DNS 查询。

您有两个可以使用单播 DNS 的主机名解析服务:resolvedns​​ 。其中之一或两者显然已被配置(可能由您的 DHCP 客户端)用作station您的 DNS 默认域。

对于resolve,运行resolvectl status。对于dns,运行cat /etc/resolv.conf。这应该告诉您哪个 DNS 解析服务station配置了域。

(除非配置为不使用常规 DNS,否则两者一起resolve使用有点像腰带式配置:通常您只需要其中之一。)resolvedns

如果您使用 NetworkManager 配置网络接口并使用 DHCP,您可能会查看最新的*.lease文件(或同等文件;这可能取决于 NetworkManager 配置使用的 DHCP 客户端)以/var/lib/NetworkManager查看哪个 DHCP 服务器实际为您提供了 IP地址以及随之而来的附加 DHCP 选项。

查看 DHCP 服务器提供的 DHCP 选项的另一种方法是运行nmcli c show以列出已配置的连接,查找活动连接的名称,然后使用nmcli c show <name of active connection> | grep DHCP..OPTION.

由于 Vodafone Power Station 是您的路由器,因此它很可能还充当您家庭网络的 DHCP 服务器。.station可能只是 DNS 域的出厂默认设置,它会将该设置传播到所有 DHCP 客户端。它可能可以通过路由器的设置进行更改。

答案2

由于不相关的问题,我最终检查了/etc/resolv.conf,它是由NetworkManager我用作客户端的所有发行版创建的。

根据@Kusalananda的建议,似乎沃达丰发电站导致网络管理员将选项添加search station到文件中,并将其IP地址作为DNS服务器;删除这一行会导致http://vodafone.stationFirefox 上的名称解析失败(这本身很奇怪,因为该名称仍然由该站的 DNS 解析)

相关内容