Linux

如果沒有指定 TLD,為什麼 getent 預設為 .station?

  • May 3, 2021

使用我目前的設置,我有一個dnsmasq在我的家庭伺服器(Void Linux)上執行的實例和 3 個將其用作預設 dns 的 GNU/Linux 設備(1 個 Manjaro、1 個 Arch、1 個 Linux Mint 20.1)。

由於看似無關的問題,我正在使用 測試 mdns 名稱解析getent,我注意到,通過查看dnsmasq日誌和執行strace getent,如果尚未指定域,getent它將自動附加.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

getent用呼叫strace

我無法找到有關.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

getent hostshosts一行nsswitch.conf告訴它做的事情。表示它正在向strace192.168.0.100 發送單播 DNS 查詢。

您有兩個可以使用單播 DNS 的主機名解析服務:resolvedns. 其中一項或兩項顯然已被您的 DHCP 客戶端配置station為用作您的 DNS 預設域。

對於resolve,執行resolvectl status。對於dns,執行cat /etc/resolv.conf。這應該告訴您哪些 DNS 解析服務station配置了域。

(除非resolve配置為不使用正常 DNS,否則兩者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 客戶端。它可能可以從路由器的設置中更改。

引用自:https://unix.stackexchange.com/questions/647832