我有一个带有静态 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
缺失的环节是什么?
答案1
我想通了,解决办法有两个。我已经在几个不同的盒子上测试了两者。
方案A
验证您的resolv.conf
包含“domain”关键字,如下所示:
# Generated by resolvconf
domain example.org
nameserver 127.0.0.1
如果你dhcpcd.conf
像我一样设置静态IP,你必须指定这个未记录的选项:
static domain_name=example.org
最后,你需要消除/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更好。