我的 ISP 授予我一个IPv4 地址和一个 IPv6 前缀,该前缀已细分为几个网络。
+--------------+
| | eth1
| |---------- <IPv6 network>
| |
eth0 | Linux Router | eth2
ISP ----------| |---------- <IPv6 network>
| |
| | eth3
| |---------- <IPv6 network>
+--------------+
碰巧的是,连接到 IPv6 网络的节点之一eth1
将受益于拥有 IPv4 地址。
看来我希望路由器桥接IPv4 流量,并路由IPv6 流量。不是吗?
我听说过代理 ARP,但据我所知,路由器需要另一个 IPv4 地址,否则它不会尝试与 ISP 的 v4 流量交互,对吧?同样,我只有一个 v4 地址。
我认为,正常的桥接也不是一种选择,因为那是第 2 层,它无法区分 IPv4 流量和 IPv6 流量。如果我桥接 IPv4,我也会桥接 IPv6,这会破坏当前的 IPv6 设置。
我是否被迫将流量 NAT 到专用网络,并从该网络为节点分配另一个地址?有没有更直接的选择?
(所有这些命令都应该在 Linux 路由器上执行。)
第 1 步:正常创建网桥,就好像它要在两个接口之间路由所有流量一样。
第 2 步:通过 ebtables 规则,告诉内核应该桥接 IPv4 流量,并且应该路由 IPv6 流量。
(在 BROUTING 链中,“ACCEPT”表示桥接,“DROP”表示忽略桥接。)
Linux 路由器的所有接口都不需要 IPv4 地址。
不应在 Virtualbox VM 上测试此解决方案,因为某处存在一些桥接错误
br0
,根本无法工作。