![如果我已经有 /64 地址,为什么还必须向设备显式添加 /128 ipv6 地址?](https://linux22.com/image/161339/%E5%A6%82%E6%9E%9C%E6%88%91%E5%B7%B2%E7%BB%8F%E6%9C%89%20%2F64%20%E5%9C%B0%E5%9D%80%EF%BC%8C%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BF%98%E5%BF%85%E9%A1%BB%E5%90%91%E8%AE%BE%E5%A4%87%E6%98%BE%E5%BC%8F%E6%B7%BB%E5%8A%A0%20%2F128%20ipv6%20%E5%9C%B0%E5%9D%80%EF%BC%9F.png)
在 Fedora 服务器上,我的 中包含以下行/etc/sysconfig/network-scripts/ifcfg-eth0:0
:
IPV6ADDR=<REDACTED>:48ea::1/64
现在绑定到该特定地址可以工作:
$ nc -l <REDACTED>:48ea::1 1025
但是,绑定到同一网络掩码空间中的另一个地址会失败:
$ nc -l <REDACTED>:48ea::2 1025
Ncat: bind to <REDACTED>:48ea::2:1025: Cannot assign requested address. QUITTING.
如果显式添加<REDACTED>:48ea::2/128
(通过将其添加到IPV6ADDR_SECONDARIES
或通过运行ip addr add <REDACTED>:48ea::2/128 dev eth0
),那么我可以绑定到它。
为什么添加/64
地址还不够?在使用设备之前,我是否必须显式地将每个 /128 地址添加到设备中?
答案1
后面的数字/
是子网大小,在 IPv6 中(几乎)始终是 /64。它没有说明任何有关您本地计算机的信息。就像 IPv4 一样,您仍然必须为接口分配每个单独的地址。
使用 IPv4,您可以编写192.168.0.1/24
和192.168.0.1/255.255.255.0
。他们的意思完全一样。
对于 IPv6,书写<REDACTED>:48ea::1/ffff:ffff:ffff:ffff::
(甚至<REDACTED>:48ea::1/ffff:ffff:ffff:ffff:0000:0000:0000:0000
)会变得有点笨拙,因此仅<REDACTED>:48ea::1/64
使用符号。