我使用以下命令创建了 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 隧道也可以)。