我正在使用 wifi 中继器 (AVM FRITZ!WLAN 中继器 310) 来扩展我家里的 wifi。我注意到,当我连接到我的主要接入点/dsl 调制解调器/路由器 (Speedport W 724V) 的 wifi(我们称之为 wifi A)时,我可以毫无问题地使用 ipv6。当我使用中继器的 wifi(wifi B)时,我的计算机会获取 ipv6 地址,但当我在互联网上 ping 我的服务器时,我没有得到任何响应。此外,wifi A 中的设备无法通过 ipv6 访问 wifi B 中的设备。
通过使用 wireshark,我发现从 wifi A 发送到 wifi B 中设备的请求节点多播地址的邻居请求消息不会通过中继器。但是,如果两个设备都在 wifi B 中,这些多播地址确实有效。
现在我的问题是:
- 在返回 ping 请求或其他 tcp/udp 数据包的答复时,ipv6 路由器是否需要使用带有请求节点多播地址的邻居请求?
- 如果中继器在其 WiFi 中存在给定的多播组,它是否应该转发此类消息?
- 我是否忘记了 ipv6 中的其他概念,而这些概念可能会导致我遇到问题?
答案1
在返回 ping 请求或其他 tcp/udp 数据包的答复时,ipv6 路由器是否需要使用带有请求节点多播地址的邻居请求?
通常情况下是的,但兼容 IPv6 的接入点可能会执行 ND 代理,以避免不必要地唤醒客户端。(许多 AP 已经针对 IPv4 ARP 执行了同样的操作。)
此外,如果 AP做将 NS 数据包传送到客户端,如果它支持“多播到单播”(更可靠,但有时会使接收设备感到困惑)与使用实际的 Wi-Fi 多播相比,您可能会得到不同的结果。
答案2
这看起来可能有点草率,但您可以强制两端都使用 iPv6 NDP 条目,以便它们可以通信。(这类似于手动添加永久 ARP 表条目,以便两个 IPv4 主机在 ARP 失败时可以通信。)这就是我解决使用有线<-->无线<-->有线桥接时没有 IPv6 连接的问题的方法。
在 Linux 上,你可以这样做:“ip -6 neigh add(远程 ipv6 地址)lladdr(远程 mac 地址)dev(接口)”
在 Windows 上,您可以类似地使用“netsh interface ipv6 add neighbours (arguments)”命令。
Ed Thubert 在此处发布了 IETF 针对此问题提出的解决方案:https://tools.ietf.org/id/draft-thubert-6man-ipv6-over-wireless-00.html
杰夫