默默的一块石头
分类: linux
2022-07-01 14:26:51
路由器(route)
路由器主要是实现不同网段的互联互通。
结合下图的意义就是:让192.168.1.1与192.168.2.1网段实现互联互通。
ipvlan l3
ipvlan 有点像路由器的功能,它在各个虚拟网络和主机网络之间进行不同网络报文的路由转发工作。只要父接口相同,即使虚拟机/容器不在同一个网络,也可以互相ping通对方因为ipvlan会在中间做报文的转发工作。
接下来根据上面的图来进行,先删除原有的网络空间,执行如下命令:
-
ip netns delete net1
-
ip netns delete net2
接下来的步骤与二相似
-
# 创建网络空间
-
ip netns add net1
-
ip netns add net2
-
# 创建子接口
-
ip link add ipvlan1 link ens32 type ipvlan mode l3
-
ip link add ipvlan2 link ens32 type ipvlan mode l3
-
# 关联ipvlan l3与vm上的网络空间
-
ip link set ipvlan1 netns net1
-
ip link set ipvlan2 netns net2
-
# 设置不同网段
-
ip netns exec net1 ifconfig ipvlan1 192.168.10.135/24 up
-
ip netns exec net2 ifconfig ipvlan2 192.168.20.136/24 up
-
# 测试一下二则是否ping得通
-
ip netns exec net1 ping 192.168.20.136
我们发现它并ping不通,因为网段不一样,而且我们来看看net1的路由信息。
我们会很轻容易的发现,它只有到192.168.10.0的路由,并没有到192.168.20.0的路由
从这里我们就发现一个ipvlan l3的缺陷:
路由器它是具有自己学习路由的能力的,比如自己找到哪些网段可以连接上。
而ipvlan l3 需要自己手动添加路由。
-
# net1添加192.168.20.0目的地,路由从ipvlan1子接口出去
-
ip netns exec net1 route add -net 192.168.20.0/24 dev ipvlan1
-
# net2添加192.168.10.0目的地,路由从ipvlan2子接口出去
-
ip netns exec net2 route add -net 192.168.10.0/24 dev ipvlan2
最后我们再来测试一下是否ping得通。