我有一个带有 /64 块 IPv6 的 Ubuntu 16.04.2 服务器。
如果我添加块,如下所示:
ip addr add 2001:41d0:xxx:yyy::/64 dev eth2
只有第一个有效:
$ curl -g http://[2001:41d0:xxx:yyy::]/
<!DOCTYPE html>...
$ curl -g http://[2001:41d0:xxx:yyy::1]/
curl: (7) Failed to connect to 2001:41d0:xxx:yyy::1 port 80: Connection timed out
如果我一一添加其他的,它们会起作用:
ip addr add 2001:41d0:xxx:yyy::1/128 dev eth2
我做错了什么?
该块也在 /etc/network/interfaces 中:
iface eth2 inet6 static
address 2001:41d0:xxx:yyy::
netmask 64
接口地址是单个地址,尽管您可以将一堆 IPv6 地址分配给一个接口,因此您实际上是将网络中的
2001:41d0:xxx:yyy::
地址添加2001:41d0:xxx:yyy::/64
到一个接口。IPv6 实际上允许您将网络中的每个地址用作主机地址,这与 IPv4 不同,在 IPv4 中网络地址不能用作主机地址,但RFC 2373,IP 版本 6 寻址体系结构将路由器子网任播地址定义为所有网络的零地址。
@Ron_Maupin 给出了一个正确的答案,但我觉得它会得到一个更简单的答案:
/64 并不意味着将整个块分配给接口。它为接口分配了一个地址,并告诉它 LAN 有 /64 块。这几乎总是您想要的以太网接口。
/128几乎不是您想要的以太网接口。从 LAN 将无法访问这些地址。