史蒂文·布莱克的具有基本扩展的统一主机文件开头包含以下块:
127.0.0.1 localhost
127.0.0.1 localhost.localdomain
127.0.0.1 local
255.255.255.255 broadcasthost
::1 localhost
::1 ip6-localhost
::1 ip6-loopback
fe80::1%lo0 localhost
ff00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
0.0.0.0 0.0.0.0
它定义了三个记录localhost
(我甚至不知道为同一个域名包含多个记录是否有效)和一些我不确定是否应该存在的其他记录(我实际上认为 hosts 文件应该是空的,除非你有理由覆盖某些东西或定义自定义域名)。
这些行中的每一行都是什么意思,在什么情况下可以使用它以及为什么要将其包含在 hosts 文件中?
答案1
这是我们都熟知并喜爱的标准 IPv4 本地主机:
127.0.0.1 localhost
这::1
是的 IPv6 版本,127.0.0.1
因此这里的内容如下:
::1 localhost
这是本地链接地址的 IPv6 范围;这大致相当于169.254.*.*
IPv4:
fe80::1%lo0 localhost
作为维基百科上有解释,请注意第二段;粗体强调是我的:
在 Internet 协议版本 6 (IPv6) 中,地址块
fe80::/10
已保留用于链路本地单播寻址。在链路本地地址的网络组件的 64 位中,最高 10 位 (1111111010) 对应于 IANA 为链路本地地址保留的“全局路由前缀”,而“子网 ID”(其余 54 位)为零。与 IPv4 不同,IPv6 要求每个启用 IPv6 协议的网络接口上都有一个链路本地地址,即使还分配了可路由地址。因此,IPv6 主机通常会为每个启用 IPv6 的网络接口分配多个 IPv6 地址。邻居发现协议的 IPv6 子层操作以及某些其他基于 IPv6 的协议(例如 DHCPv6)需要链路本地地址。
答案2
看起来以下内容只是取自 Ubuntu 中的标准 hosts 文件:
ff00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
以下是 MacOS 中的:
255.255.255.255 broadcasthost
fe80::1%lo0 localhost
所以我猜测他们只是包含了所有类型的主机文件的内容。