尝试在 GRE 接口上配置桥接,遇到问题

尝试在 GRE 接口上配置桥接,遇到问题

我使用以下命令创建了 ipv6 隧道:

ip link add gre_test type ip6gre remote 2001:4860:4860::8888 local ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff ttl 255

删除了实际的 ipv6

之后我打开了这个界面:

ip link set dev gre_test up

最后,当我尝试在网桥 default_lan 下添加接口时,我遇到了这个问题

brctl addif default_lan gre61
can't add gre61 to bridge default_lan: Invalid argument

所以基本上我正在创建一个 ipv6 隧道并在桥接接口上终止它但是当我尝试添加桥接时收到错误 Invalid argument 。如果 gre 接口是纯粹的 ipv4 并且我们使用“gretap”,它就可以工作。

答案1

如果 gre 接口是纯粹的 ipv4 并且我们使用“gretap”,它就可以工作。

之所以有效,是因为您使用了“gretap”,而不是因为该接口纯粹是 ipv4。

标准 GRE 接口,无论是 IPv4 还是 IPv6,都不可桥接,因为它们是“第 3 层”隧道 – 它们不携带L2标头这是 L2 桥正常工作所必需的。

回想一下,网桥的工作原理是根据数据包的 L2 目的地(MAC 地址)转发数据包,而通过普通 GRE 到达的数据包则不具备这一点,因此网桥对此无能为力。

(如果您希望桥接器查看 L3 (IP) 目标地址 - 那么,那将不再是桥接器,而是路由器。)

因此,如果您想通过 IPv6 桥接网络,您需要L2 隧道,如“gretap”或“ip6gretap”。 (这两种类型取决于底层网络,而不是隧道流量 - 所有 GRE 隧道都可以承载这两种 IP,所有 L2 隧道也可以)。

相关内容