本文共 1017 字,大约阅读时间需要 3 分钟。
Linux的网络命名空间用以隔离Linux主机上的不同的网络环境。但是有时候,我们又需要从一个网络命名空间中访问另一个网络命名空间中的网络,这就需要用到虚拟网络设备。
虚拟网络设备(Virtual Network Device)是一种抽象的网络设备,类似网络管道,用以在不同的网络命名空间之间建立传输隧道,也可以用以创建网桥以连接到多个其他网络命名空间。虚拟网络设备在Linux中的实现就是veth(Virtual Ethernet Device)。veth是一种虚拟的网络设备,总是被成对地创建,并且一对veth永远是连通的,所以veth一般被称之为veth pair。删除任何一个veth,则成对的另一个veth也会被同时自动删除。
通过veth pair就能够把两个相互隔离的网络命名空间连接起来,从而实现两个网络命名空间之间的通信。相关的命令如下:
#在默认ns创建一对vethip link add veth_left type veth peer name veth_right#设置一个veth所属的ns,另一个留在默认nsip link set veth_right netns oam#分配静态IP并启动ip addr add 10.0.1.1/24 dev veth_leftip link set dev veth_left upip netns exec oam ip addr add 10.0.1.2/24 dev veth_rightip 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