我的任务是为我的同事编写一份有关 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
变为::/128
并0: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如果您想快速了解它们。