Networking
使用來自 iputils-s20180629 的 ping 和最短的 DNS 名稱(帶有“A”記錄)時出現錯誤的 DNS 答案:dk
我想知道為什麼ping無法在我的 Debian 10 上檢索
dk
TLD的 ipv4。這是一個有效的域名,是我通過dns知道的最短的域名(有A
記錄)。很好的測試網路連接。當我使用dig時,一切都按預期執行:
dig A +short dk 193.163.102.58
但是當我使用ping時,
dk
它會附加到我擁有的域中,並啟用萬用字元。比方說example.org
,所以:ping -c1 dk PING dk.example.org (x.x.x.x) 56(84) bytes of data. 64 bytes from x.x.x.x-reverse-dns (x.x.x.x): icmp_seq=1 ttl=57 time=3.72 ms --- dk.example.org ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 3.716/3.716/3.716/0.000 ms
但是,如果我附加一個點,它會起作用:
ping -c1 dk. PING dk (193.163.102.58) 56(84) bytes of data. 64 bytes from static3.prod.dkhm.dk (193.163.102.58): icmp_seq=1 ttl=51 time=24.6 ms --- dk ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 24.569/24.569/24.569/0.000 ms
通過
DoT
/stubby
和通過一些公共靜態 DNS 解析器進行測試/etc/resolv.conf
(結果相同)。我沒有任何本地解析器,例如
unbound
norbind
。目錄和 IP 地址
example.org
中沒有任何有趣的匹配。/etc
我
/etc/nsswitch.conf
在配置不正確的情況下:[...] hosts: files mdns4_minimal [NOTFOUND=return] dns networks: files [...]
有誰知道發生了什麼?
最短的域名是
.
. 這很重要,因為dk
它不是完全限定的域名。它的人類可讀形式不會以句點結束。以句點結尾表示(人類可讀形式)完全限定域名。DNS 以完全限定的域名起作用,您的 DNS 客戶端庫(連結到類似 的程序
ping
)必須通過附加一個或多個後綴將其轉換dk
為. 您的 DNS 客戶端正在附加您看到的後綴。在大多數 C 庫中包含的 BIND DNS 客戶端庫的情況下,後綴列表來自 中的指令/etc/resolv.conf
,回退到提供給作業系統的動態域名後綴(以各種方式)。
dk.
相比之下*,是*完全限定域名,DNS客戶端庫不通過名稱限定。這裡實際上沒有任何問題。
進一步閱讀
- 喬納森·德博因·波拉德 (2017)。“完全限定名稱的概念”。什麼是 DNS 名稱限定。經常給出答案。