在 /etc/hosts 中显示 IPv6 地址的正确方法是什么

在 /etc/hosts 中显示 IPv6 地址的正确方法是什么

我的任务是为我的同事编写一份有关 IPv6 的文档,以了解如何在我们的主机上配置 IPv6 地址。我们主要使用RHEL6.x/7.x、ESXi和Ubuntu Server。这仅适用于 RHEL/Ubuntu。

争论:您应该如何在/etc/hosts.

我看到它显示为:

2001:4860:4860::1:8888 google.com
# Gateway:IPv6 Address <hostname_here>

或者

其编写方式与 IPv4 的编写方式相同。

答案1

主机文件格式由多行组成,每一行包含 IP 地址,后跟空格,然后是一个或多个主机名,也用空格分隔。

当地址是 IPv6 地址而不是旧版 IPv4 地址时,不会发生任何变化。格式是一样的。

例如:

2001:db8:1::1 example.com www.example.com
2001:db8:2::1 mail.example.com

另请参阅hosts(5)手册页

答案2

IPv6 地址有自己的格式化系统,因为它们代表 128 位寻址空间:即 16 个八位位组,这将非常笨重!同样,此时存在大量嵌入的零,因此能够很方便地将它们压缩出来。为了指示未使用八位位组,使用冒号而不是句点;同样,使用十六进制数字代替十进制。

一个IPv6地址看起来像下面这样:

aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh[%int][/netmask]

netmask工作原理与 IPv4 相同,只是最多可达 128 个。

需要%int的是范围内的地址,不是全局地址,仅在本地网络内部有意义,并指定哪个网络接口拥有该地址,因为两个接口可能具有相同的地址。

允许省略前导零,并且地址中的单串零(按照惯例,最长的一个)可以是压缩的通过使用::

2001:0db8:1523:0000:1334:0000:0000:0193
删除前导零:2001:db8:1523:0:1334:0:0:193
压缩最长的零串:2001:db8:1523:0:1334::193

有一些特殊情况:

  • 任何完全以零开头的地址都可以压缩为::,然后非零部分(0:0:0:0:0:0:0:0/128变为::/1280:0:0:0:0:0:0:1/128变为::1/128)。

  • IPv4 兼容和 IPv4 映射的 IPv6 地址类似于::a.b.c.d/96::ffff:a.b.c.d/96(或::ffff:aabb:ccdd/96)。

对于您的/etc/hosts使用而言,IPv4 和 IPv6 地址之间几乎没有任何变化:您不必担心网络掩码,并且几乎肯定不必担心范围地址或 IPv4 兼容地址。只要遵循零压缩规则,通常就应该没问题。如果您有双宿主地址(主机同时侦听 IPv4 和 IPv6),则必须输入两次,一次用于 IPv4 地址,一次用于 IPv6 地址:

::1 localhost
127.0.0.1 localhost
2001:db8:123:456::78 example.com www.example.com
192.0.2.56 example.com www.example.com
fe80::12:34:56:78%eth0 printer.example.com

我不会讨论网络掩码和范围,但如果您想参考标准范围,RIPE 制作与他们一起的 PDF如果您想快速了解它们。

相关内容