我的问题解决了我的Gentoo
Linux系统上主机名-f的奇怪行为.
症状:
rt01 ~ # time hostname -f rt01.domain.net real 0m5.007s user 0m0.001s sys 0m0.000s
使用strace,我可以看到执行以下步骤:
>阅读/etc/host.conf(可能)确定主机的顺序
应该完成查找
>阅读/ etc / hosts(在我看来这应该足够了,而不是……)
>连接到/etc/resolv.conf中指定的DNS服务器
>再次阅读/ etc / hosts
该计算机上的iptables设置阻止它连接到任何DNS服务器.因此 – 按设计 – 在此时被阻止.我的期望是,使用以下配置不需要此步骤:
是/etc/host.conf
# This keyword specifies how host lookups are to be performed. It # should be followed by one or more lookup methods,separated by # commas. Valid methods are bind,hosts,and nis. # order hosts,bind
/ etc / hosts文件
# IPv4 and IPv6 localhost aliases 127.0.0.1 rt01.domain.net rt01 localhost <public ip> rt01.domain.net rt01 ::1 localhost
/etc/conf.d/hostname
# Set to the hostname of this machine hostname="rt01"
有人可以向我解释,为什么hostname -f尝试连接到DNS服务器.我认为/ etc / hosts提供的信息应该足够了.
解决方法
解析DNS查询的顺序基于/etc/nsswitch.conf的内容.具体来说,主机行的选项顺序
hosts: dns files
手册页:http://man7.org/linux/man-pages/man5/nsswitch.conf.5.html