Linux 上的 /etc/hosts 中的一行可以仅包含 IP 地址吗?

Linux 上的 /etc/hosts 中的一行可以仅包含 IP 地址吗?

我正在密切关注/etc/hostsLinux 中的文件。我设计了一些/etc/hosts文件操作,如添加、修改和删除。

我读过很少的内容/etc/hosts并知道它包含<IP> <FQDNS separated by space>.

我的问题是:输入的行是否/etc/hosts只能包含 IP 地址条目,如下所示:

:1            localhost
192.168.25.21 host1.support.com
192.168.25.22 host2.support.com
192.168.25.23
192.168.25.24
192.168.25.25 host5.support.com

答案1

对此确实不可能给出是或否的答案。

linux(内核)根本不读取hosts 文件。相反,每个使用 DNS 解析的程序都会自行读取该文件。

我之前遇到过软件在主机名解析方面表现不同的问题,结果是uClibc做不同的事情glibc。它们有自己的代码来读取此类文件,并且它们的行为并不完全相同。

即使您确定自己了解主要库的用途,您也经常会发现例外情况。例如,互联网上有大量参考资料表明谷歌浏览器不读取或不一定尊重主机文件。只要有一个例外,通常就会有更多例外。

我对您的建议是避免仅输入 IP,除非您确切地知道系统上每个程序的行为方式。

答案2

/etc/hosts仅包含 IPv4 或 IPv6 地址的条目在技术上是无效的(且无意义),但不同的解析器例程如何处理该情况是特定于实现的。

您还应该注意,/etc/hosts还可能包括注释行以及被视为注释的任何文本#和别名(昵称)。一个或多个空格和/或制表符用于分隔一行中的各个字段 - 而不仅仅是一个空格。

例如:

# comment
192.168.1.100  foobar.mydomain.org  foo bar

相关内容