连接到运行 radvd 的 DD-WRT 路由器的主机获取 IPv6 地址但无法通信

Set*_*eth 6 networking router wireless-networking dd-wrt ipv6

我正在尝试让 IPv6 在我的本地网络上运行。我知道我的 ISP (Comcast) 支持它,因为任何连接到我从他们那里租用的调制解调器/路由器组合的东西都会被分配一个 IPv6 地址并使用该协议进行通信(可以连接到 ipv6.google.com 并在http:/ /test-ipv6.com/)。

但是,当我将运行 DD-WRT 的自己的路由器(Netgear WNDR3800,如果相关)连接到 Comcast 调制解调器/路由器组合时,没有任何主机可以通过 IPv6 进行通信,尽管它们在我由 Comcast 委派的前缀中分配了 IPv6 地址。

它似乎在离开 LAN 之前就失败了。尝试 ping 路由器的 IPv6 地址返回“目标主机无法访问”。我的猜测是我在某处缺少路由,但我对 IPv6 或路由不够熟悉,不知道如何测试该理论或如何解决它。

技术细节:

路由器:运行 DD-WRT v24-sp2 的 WNDR3800。它的 IPv6 配置如下所示:

在此处输入图片说明

路由器ifconfig:

root@DD-WRT:~# ifconfig
ath1      Link encap:Ethernet  HWaddr [redacted]
          inet6 addr: fe80::224e:7fff:fe74:13da/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:188122 errors:0 dropped:0 overruns:0 frame:0
          TX packets:227134 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:26587839 (25.3 MiB)  TX bytes:211385503 (201.5 MiB)

br0       Link encap:Ethernet  HWaddr [redacted]
          inet addr:192.168.2.1  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::224e:7fff:fe74:13d8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:190093 errors:0 dropped:0 overruns:0 frame:0
          TX packets:217213 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:24491040 (23.3 MiB)  TX bytes:204922896 (195.4 MiB)

br0:0     Link encap:Ethernet  HWaddr [redacted]
          inet addr:169.254.255.1  Bcast:169.254.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0      Link encap:Ethernet  HWaddr [redacted]
          inet6 addr: fe80::224e:7fff:fe74:13d8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1989 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21615 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:569599 (556.2 KiB)  TX bytes:3297349 (3.1 MiB)
          Interrupt:4

eth1      Link encap:Ethernet  HWaddr [redacted]
          inet addr:10.0.0.59  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: 2601:601:XXXX:XXXX:XXXX:XXXX:XXXX:13d9/64 Scope:Global
          inet6 addr: fe80::224e:7fff:fe74:13d9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:216381 errors:0 dropped:0 overruns:0 frame:0
          TX packets:181622 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:202350364 (192.9 MiB)  TX bytes:25482727 (24.3 MiB)
          Interrupt:5
Run Code Online (Sandbox Code Playgroud)

来自连接到路由器的 Windows 8.1 主机的 ipconfig:

C:\Users\seth>ipconfig

Windows IP Configuration


Wireless LAN adapter Wi-Fi:

   Connection-specific DNS Suffix  . :
   IPv6 Address. . . . . . . . . . . : 2601:601:XXXX:XXXX:XXXX:XXXX:XXXX:75c3
   Temporary IPv6 Address. . . . . . : 2601:601:XXXX:XXXX:XXXX:XXXX:XXXX:2b13
   Link-local IPv6 Address . . . . . : fe80::18b5:93d6:d9db:75c3%4
   IPv4 Address. . . . . . . . . . . : 192.168.2.100
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.2.1
Run Code Online (Sandbox Code Playgroud)

(从输出中删除了不相关的接口。lo、VMWare 等)

kas*_*erd 1

根据您的问题和评论中的说明,我们了解到您所拥有的是/64从 ISP 委托给调制解调器的权限。调制解调器将其用作/64与 DD-WRT 路由器连接的链路前缀。如果该连接上有一个开关(可能内置在调制解调器中),那么您可以将更多设备连接到该链路。

您没有的是委托给 DD-WRT 的前缀。前缀只是没有被委托那么远。

您已在 DD-WRT 配置中手动输入前缀,就像已委派一样。然而,情况并非如此,因此本质上您已将连接到 DD-WRT 的所有设备配置为欺骗不属于它们所连接的网段的 IP 地址。也许他们能够将数据包发送到互联网,但他们永远不会得到回应。

如何解决

你有几个选择。最干净的解决方案是拥有多层前缀委托。ISP 应该为您的调制解调器指定一个较短的前缀。对于您描述的用法,前缀的长度没有区别,只要它是 a/63或更短即可。对于以下示例,我假设 ISP 已将其委托2001:db8:feed::/48给您的调制解调器。

调制解调器可以将子网分成/48子网,并向 DD-WRT 发送路由器通告2001:db8:feed::/64并委托2001:db8:feed:100::/56给 DD-WRT。然后 DD-WRT 可以使用该委托来发送 的路由器通告2001:db8:feed:100::/64。这将为两个路由器留下大量可用的地址空间块,它们可以将其转委托或用于其他接口。例如,如果您有具有多个 VLAN 的以太网或具有多个 SSID 的 WiFi,则/64DD-WRT 可以为其发送路由器通告的总数为 256 个。

如果调制解调器不支持怎么办

(据我所知)多层前缀委托并未得到广泛支持。因此,如果您的调制解调器不支持,则上述解决方案将不起作用。您的 ISP 也可能会忽略有关要委托的前缀长度的 RFC,并且仅在/64他们应该为您提供更短的前缀长度时才给您一个,在这种情况下您也将无法使用上面解释的解决方案。但还有一个替代方案。

如果您将两台路由器之一配置为桥接器而不是路由器,则 LAN 和互联网之间的路径上将少一个 IP 网段。这意味着您只需要一次/64委派即可获得工作配置,并且您将只有单层前缀委派,因此不再需要支持多层前缀委派。

从您的问题来看,这听起来像是您想要桥接的调制解调器。然后 ISP 可以将前缀直接委托给您的 DD-WRT 路由器,以便在 LAN 上使用。