本文主要是介绍虚拟网络设备及其在Linux网络命名空间中的应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Linux的网络命名空间用以隔离Linux主机上的不同的网络环境。但是有时候,我们又需要从一个网络命名空间中访问另一个网络命名空间中的网络,这就需要用到虚拟网络设备。
虚拟网络设备(Virtual Network Device)是一种抽象的网络设备,类似网络管道,用以在不同的网络命名空间之间建立传输隧道,也可以用以创建网桥以连接到多个其他网络命名空间。虚拟网络设备在Linux中的实现就是veth(Virtual Ethernet Device)。veth是一种虚拟的网络设备,总是被成对地创建,并且一对veth永远是连通的,所以veth一般被称之为veth pair。删除任何一个veth,则成对的另一个veth也会被同时自动删除。
通过veth pair就能够把两个相互隔离的网络命名空间连接起来,从而实现两个网络命名空间之间的通信。相关的命令如下:
#在默认ns创建一对veth
ip link add veth_left type veth peer name veth_right
#设置一个veth所属的ns,另一个留在默认ns
ip link set veth_right netns oam#分配静态IP并启动
ip addr add 10.0.1.1/24 dev veth_left
ip link set dev veth_left up
ip netns exec oam ip addr add 10.0.1.2/24 dev veth_right
ip netns exec oam ip link set dev veth_right up#至此,完成了默认ns与oam ns之间的连接。
#但是要能够在两个ns之间通信,还需要进行必要的配置,请继续关注后续文章。
参考链接:
https://yakking.branchable.com/posts/networking-4-namespaces-and-multi-host-routing/
https://www.cnblogs.com/sparkdev/p/9462762.html
https://cizixs.com/2017/02/10/network-virtualization-network-namespace/
http://www.360doc.com/content/18/0829/07/44856983_782027344.shtml
这篇关于虚拟网络设备及其在Linux网络命名空间中的应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!