使用轻型隧道允许将同一(隧道)设备用于多个目的地(除其他外)。对于 vxlan/ipv4 有效;
ip link add vxlan4 type vxlan dstport 4789 dev eth1 ttl 4 external
ip link set dev vxlan4 up
ip route replace 220.0.0.0/24 dev vxlan4 encap ip id 100 dst 192.168.2.221
但同样的配置对IPv6不起作用;
ip -6 link add vxlan6 type vxlan dstport 4789 dev eth1 ttl 4 external
ip link set dev vxlan6 up
ip -6 route replace 3000::/96 dev vxlan6 encap ip6 id 100 dst 1000::1:c0a8:2dd
命令被接受,但没有发送至 3000::/96 的数据包(使用 tcpdump 测试)。
如何在 Linux 上使用“ip encap”为 IPv6 设置隧道/vxlan?
我的版本:
ip utility, iproute2-5.19.0
Kernel linux-6.0.0
我在使用 GRE 隧道时也遇到了类似的问题。
答案1
这可能是问题我想要的是一种仅使用一个本地隧道接口将 ipv4 和 ipv6 隧道传输到多个目的地的方法。我认为 vxlan 是最好的,因为它似乎最常用,但我找到了一种使用ip6tnl:
ip link add ip6tnl6 type ip6tnl external
ip link set up dev ip6tnl6
ip -6 route replace 3000::/96 dev ip6tnl6 encap ip6 dst 1000::1:192.168.2.221
ip route replace 220.0.0.0/24 dev ip6tnl6 encap ip6 dst 1000::1:192.168.2.221
通过此设置,ipv4 到 220.0.0.0/24 和 ipv6 到 3000::/96 都将通过隧道传输到同一 ipv6 目的地 1000::1:192.168.2.221。而且我可以使用相同的隧道接口添加更多到其他目的地的路由。
如果有人知道为什么相同的命令对 vxlan 不起作用,我仍然很感兴趣。