我有一个具有IPv6的/ 64块的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::/64添加2001:41d0:xxx:yyy:: addressnetworking到一个接口。
IPv6实际上允许使用networking中的每个地址作为主机地址,而不像IPv4那样networking地址不能用作主机地址,而RFC 2373,IP版本6寻址体系结构将路由器 – 子网选播地址定义为全局地址,零networking地址。
2.6.1所需的任播地址
子网路由器任播地址是预定义的。 其格式如下:
| n bits | 128-n bits | +------------------------------------------------+----------------+ | subnet prefix | 00000000000000 | +------------------------------------------------+----------------+任播地址中的“子网前缀”是标识特定链路的前缀。 该任播地址在语法上与接口标识符设置为零的链路接口的单播地址相同。
发送到子网路由器任播地址的数据包将被传送到子网上的一个路由器。 所有路由器都需要支持它们具有接口的子网的子网路由器任播地址。
@Ron_Maupin给出了一个正确的答案,但我觉得它会被一个更简单的答复:
/ 64并不意味着将整个块分配给接口。 它给接口分配了一个地址,告诉它局域网有/ 64块。 这几乎总是您想要的以太网接口。
/ 128 几乎不是你想要的以太网接口。 这些地址将不能从LAN访问。