Dns
dnsdomainname 和 hostname -f 不返回 FQDN
我有一個帶有靜態 IP 的盒子(Rasberry Pi,執行 rasberian)。它在具有域名的網路中執行,並且我設置了多個 DNS 伺服器。
但是,我無法讓 FQDN 名稱在此框上工作:
sitron@pi:~ $ domainname (none) sitron@pi:~ $ dnsdomainname sitron@pi:~ $ hostname -f pi
我相信我已經正確設置了 DNS:
sitron@pi:~ $ hostname -I 192.168.10.9 2001:db8:abba::9 sitron@pi:~ $ cat /etc/resolv.conf domain example.org search example.org nameserver 2001:db8:abba::5 nameserver 192.168.10.5 sitron@pi:~ $ dig +short -x 192.168.10.9 @2001:db8:abba::5 pi.example.org. sitron@pi:~ $ dig +short -x 2001:db8:abba::9 @2001:db8:abba::5 pi.example.org. sitron@pi:~ $ dig +short -x 2001:db8:abba::9 @192.168.10.5 pi.example.org. sitron@pi:~ $ dig +short -x 192.168.10.9 @192.168.10.5 pi.example.org.
我的 nsswitch.conf:
# /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc-reference' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: compat group: compat shadow: compat gshadow: files hosts: files mdns4_minimal dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
和 /etc/hosts:
127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 127.0.1.1 pi
缺少的連結是什麼?
我想通了,有兩種解決方案。我已經在幾個不同的盒子上測試了兩者。
解決方案 A
驗證您是否
resolv.conf
包含“域”關鍵字,如下所示:# Generated by resolvconf domain example.org nameserver 127.0.0.1
如果您
dhcpcd.conf
像我一樣使用設置靜態 IP,則必須指定此未記錄的選項:static domain_name=example.org
最後,您需要刪除 contains 中
/etc/hosts
的行127.0.1.1 <hostname>
。這意味著我的/etc/hosts
現在包含:127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
解決方案 B
將您的 FQDN 添加到 127.0.1.1 行中
/etc/hosts
,如下所示:127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 127.0.1.1 pi.example.org pi
但是,這意味著我要覆蓋 DNS 伺服器,這並不理想。這就是我更喜歡的原因,並假設解決方案 A更好。