Linux 轻量级隧道

Linux 轻量级隧道

Linux 现在支持轻量级隧道 https://lwn.net/Articles/650778/ 这意味着在路由上配置了隧道(因此不需要通过隧道设置一个接口)。

但不幸的是,我没能找到关于它们的大量文档。在上面链接的补丁系列中,语法是 ip route add 40.1.1.1/32 encap vxlan id 10 dst 50.1.1.2 dev vxlan0

但在我的当前版本中iproute-5.2.0,没有encap vxlan,只有encap ip id ...(mpls、bpf、seg6……)。看起来封装类型是根据设备自动检测的。因此,不要这样做

   $ ip link add dev vxlan1 type vxlan id 30001 remote 20.1.1.2 dstport 4789
   $ ip link set dev vxlan1 up
   $ ip addr add 20.1.1.1/24 dev vxlan1
   $ ip route add 10.1.1.1 dev vxlan1

我们可以这样做

   $ ip link add vxlan1 type vxlan dstport 4789 external
   $ ip link set dev vxlan1 up
   $ ip addr add 20.1.1.1/24 dev vxlan1
   $ ip route add 10.1.1.1 encap ip id 30001 dst 20.1.1.2 dev vxlan1

这给出了以下路线:

10.1.1.1  encap ip id 30001 src 0.0.0.0 dst 20.1.1.2 ttl 0 tos 0 dev vxlan1 scope link 

(我不确定src 0.0.0.0在这种情况下这意味着什么。)

所以这里的优点是我们可以设置一个 vxlan 接口,并使用不同的 vxlan id 和 enpoint 配置不同的路由(但不幸的是,似乎没有办法通过路由更改 dstport)。

但我不太明白这应该如何用于 ipip 和 gre/gretap 隧道。我找到的唯一文档是中文的 https://linux.cn/article-10672-1.html 他们使用这些命令进行 gre-tap:

    $ ip l add dev tun type gretap external
    $ ifconfig tun 1.1.1.7/24 up
    $ ip r r 2.2.2.11 via 1.1.1.11 dev tun encap ip id 1000 dst 172.168.0.1 key

因此我可以猜测是remote ADDR,但是在这种情况下,路由轻量级 gre 隧道的172.168.0.1是什么? gre 或 ipip 隧道是什么意思?local ADDRip id

gre 可以有一个密钥,并且将key关键字添加到的补丁ip route encap这里 但是这只是设置了一个标志,这里没有key关键字的参数。

我还测试了,我可以向标准以太网接口添加“encap ip”路由。在这种情况下,encap 会做什么?它如何猜测要使用哪种封装?

答案1

(在这种情况下我不确定 src 0.0.0.0 是什么意思。)

在网络中,这种符号通常用作未指定/不受限制的参数。

它用于在主机范围内绑定监听套接字,不受特定网络接口限制。

它也用于default route数字表示。

所以回到这个案例,我 99% 确定这意味着使用节点的路由表来查找适合隧道本地封装的源地址,因为没有明确给出。

因此我可以猜测“远程 ADDR”是 172.168.0.1,但是在这种情况下路由轻量级 gre 隧道的“本地 ADDR”是什么?

0.0.0.0应该与上面解释的含义完全相同。

ip id 对于 gre 或 ipip 隧道意味着什么?

仅可区分的隧道 ID,它将被填入下面的路线信息中LWTUNNEL_IP_ID,然后用于隧道查找。

答案2

在上面链接的补丁系列中,语法是 ip route add 40.1.1.1/32 encap vxlan id 10 dst 50.1.1.2 dev vxlan0。

但是在我目前的 iproute-5.2.0 上,没有 encap vxlan

补丁系列已过时Fri, 10 Jul 2015 16:19:02 +0200,同时5.2.0提交

tag v5.2.0
Tagger: Stephen Hemminger <[email protected]>
Date:   Mon Jul 8 11:11:36 2019 -0700

明确地告诉我们现在是 2019 年。—4已经过去了。我认为这解释了你所看到的矛盾。

相关内容