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-抽头:
$ 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是172.168.0.1,但是在这种情况下,路由轻量级gre隧道的local ADDR是什么呢?ip id对于gre或ipip隧道意味着什么?
gre可以有一个键,将key关键字添加到ip route encap的补丁是这里,但是这只设置了一个标志,这里没有key关键字的参数。
此外,我还测试了,我可以添加一个'encap‘路由到一个标准的以太网接口。在这种情况下,encap做了什么,它如何猜测要使用哪种封装?
发布于 2019-09-29 09:12:05
(我不知道src 0.0.0.0在这种情况下意味着什么。)
在网络中,这个表示法通常用作未指定/无限制的参数。
它用于将侦听套接字绑定到主机很宽、特定的网络接口限制时使用。
它也用于default route数值表示。
因此,回到这个情况,我确信这将意味着使用节点的路由表来查找隧道封装的本地端的合适的源地址,因为没有显式地给出其他的源地址。
因此,我可以猜测“远程ADDR”是172.168.0.1,但是在这种情况下,路由轻量级gre隧道的“本地ADDR”是什么呢?
应该是完全相同的0.0.0.0,其含义与前面解释的相同。
ip id对gre或ipip隧道意味着什么?
只需区分隧道的id,它将被填充到LWTUNNEL_IP_ID下的路由信息中,然后用于隧道查找。
发布于 2019-09-29 09:03:22
在上面链接的修补程序系列中,语法是ip路由添加40.1.1.1/32 encap id 10 DST50.1.1.2 dev vxlan0。…但是,在我当前的iproute 5.2.0中,没有封装vxlan
修补程序系列的日期为Fri, 10 Jul 2015 16:19:02 +0200,同时5.2.0提交
tag v5.2.0
Tagger: Stephen Hemminger
Date: Mon Jul 8 11:11:36 2019 -0700很明显告诉我们是2019年。4年过去了。我想这解释了你所看到的矛盾。
https://serverfault.com/questions/985656
复制相似问题