在 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
使用符号。