![设置子网之间的 IPv6 路由](https://linux22.com/image/210755/%E8%AE%BE%E7%BD%AE%E5%AD%90%E7%BD%91%E4%B9%8B%E9%97%B4%E7%9A%84%20IPv6%20%E8%B7%AF%E7%94%B1.png)
我确信这对于有网络配置经验的人来说是一个微不足道的问题,但我花了几个小时试图让它工作并阅读 IPv6 子网划分和路由器通告机制,但我仍然没有明白,所以我很抱歉为了那个原因。
这是我的拓扑:
┌────────┐
│ Router ├─────┐
└───┬────┘ │
│ │
┌─────┴────┐ ┌──┴──────────┐
│ Linux PC │ │ Windows PC │
└───┬──────┘ └─────────────┘
│
┌──┴─┐
│ C1 │
└────┘
Windows 和 Linux PC 通过 WiFi 连接到路由器(它们甚至可能直接相互通信 - 不确定 802.11xx 是否允许),而 C1 通过以太网电缆连接到 Linux PC。我正在尝试将 Linux PC 设置为网关,以便我可以从 Windows PC 访问 C1,而无需更改路由器配置。使用 IPv4,我设法在以太网接口上为 Linux PC 设置静态 IP,并在 Windows 下添加一条路由,将整个 192.168.0.xx 子网转发到 Linux PC 作为网关(C1 有一个静态 IP)在 192.168.0.xx 子网中,而该网络中的路由器和设备使用 192.168.1.xx 子网)。
现在我被迫在 IPv6 下实现相同的目标(Windows 下的应用程序通过 IPv6 发送 UDP 广播(到 FF02::1)并期望找到 C1)。我在 Linux PC 上设置了 radvd,配置如下:
interface wlp0s20f3
{
AdvSendAdvert on;
prefix fd00:abcd:1234:1234::/64
{
AdvAutonomous on;
AdvOnLink off;
};
};
interface enx0c3796559217
{
AdvSendAdvert on;
prefix fd00:abcd:1234:1235::/64
{
AdvOnLink off;
AdvAutonomous on;
};
};
我认为不同的接口最好有不同的前缀?如何启用 Windows PC 发现 C1?
我可以 ping Linux 的 FE80:... 地址。用 Wireshark 查看它,当我在 d00:abcd:1234:1234:... 地址下 ping Linux 时,我还可以看到来自 Windows PC 的数据包,尽管 Linux 会立即启动 ping 地址的邻居发现(这让我认为它并没有不要认为这个地址是它自己的),但 ping 仍然没有得到答复。我知道 FF02::1 多播地址,但是给定子网是否有多播地址? (例如 d00:abcd:1234:1234:xxxx:xxxx:xxxx:xxxx,其中属于该子网的所有设备都响应?)
顺便说一下,Linux PC 运行的是 Ubuntu。