如何同时桥接 IPv4 和路由 IPv6?

如何同时桥接 IPv4 和路由 IPv6?

我的 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 到专用网络,并从该网络为节点分配另一个地址?有更直接的选择吗?

答案1

(所有这些命令都应该在Linux路由器上执行。)

步骤 1:正常创建网桥,就好像它要路由两个接口之间的所有流量一样。

ip link add name br0 type bridge
ip link set br0 up
ip link set eth0 master br0
ip link set eth1 master br0

步骤 2:通过 ebtables 规则,告诉内核应该桥接 IPv4 流量,并且应该路由 IPv6 流量。

ebtables -t broute -A BROUTING -p ipv4 -j ACCEPT
ebtables -t broute -A BROUTING -p ipv6 -j DROP

(在BROUTING链中,“ACCEPT”表示桥接,“DROP”表示忽略桥接。)

Linux 路由器的接口都不需要 IPv4 地址。

该解决方案不应在 Virtualbox VM 上进行测试,因为存在一些问题桥接错误br0根本无法工作的地方。

相关内容