我的路由器上有一个前缀长度为 64 的 ipv6 地址。路由器的 DHCPv6 模式是混合模式。路由器下的 PC 上的 ipv6 前缀长度也是 64。
router eth0 2001:2:3:4:2eb2:1aff:feff:b19d/64
(OpenWrt) fe80::2eb2:1aff:feff:b19d/64 scope link
br-lan 2001:2:3:4:2eb2:1aff:feff:b19d/64 scope global noprefixroute dynamic
fe80::2eb2:1aff:feff:b1a0/64 scope link
fdf8:18ec:159f::1/64 scope global noprefixroute
PC(Win10) WLAN 2001:2:3:4:9555:e337:8400:b840
link-local fe80::9555:e337:8400:b840%13
Default Gateway fe80::2eb2:1aff:feff:b1a0%13
我知道ipv4包转发是基于路由表的,路由表依赖于CIDR和ipv4的不同前缀长度来识别不同的子网。
我还知道 ipv4 可以使用 NAT(网络地址转换)将包发送到我的路由器,然后它执行 NAT,然后将包发送到我的电脑。
但是对于 ipv6,我的路由器和 PC 上的 ipv6 前缀长度是相同的,并且包转发中没有 NAT,我也没有做任何配置,只是将 ipv6 模式切换到混合。
因此,我的路由器和 PC 都具有同一网络中的地址,正如@Sander Steffann
ISP 的路由器怎么知道把目的地是我 PC 的数据包发送到我的路由器呢?
编辑:更新分配给每个接口的地址。
我的路由器的LuCI显示我的路由器没有分配地址。以下是 的内容/etc/config/dhcp
。
config dhcp 'wan6'
option interface 'wan'
option ra 'relay'
option ndp 'relay'
option dhcpv6 'relay'
option master '1'
option start '100'
option limit '150'
option leasetime '12h'
对于relay
dhcp 配置文件和 dhcpv6 分配地址的空白表,感谢@Sander Steffann我认为所有的地址都是由ISP的网关分配的。
我听说有一种名为 NDP(邻居发现协议)的协议,并且有一个option ndp relay
条目。因此ISP 是否知道我所有设备的 ipv6 地址及其链路本地地址? 对应我的所有设备,ISP 网关的路由规则是否很多?
除了,是否可以将多个 ipv6 地址映射到单个链路本地地址?单个 ISP 网关上可以容纳这么多规则吗。
抱歉,我写得太多了,并且我把我的问题加粗了。
答案1
前缀大小决定了网络的大小(即所有设备的大小),而不是有多少个地址属于特定设备。
因此您的路由器和 PC 都拥有同一网络中的地址。这就是您想要的。
ISP 有某种机制来了解 /64 已连接到您的路由器,因此当它需要将数据包发送到 /64 中的地址时,它会将其发送到您的路由器。然后,您的路由器会发现目标地址位于直接连接的网络上,并将数据包转发到您的 PC。
出站流量的工作原理相同:您的 PC 知道路由器有通往世界其他地方的路由(它是 PC 的默认网关),因此它会将数据包发送到那里。然后,路由器会有一个到 ISP 的默认路由,也就是路由器的默认网关,并将数据包转发到那里。