虚拟网络设备及其在Linux网络命名空间中的应用

本文介绍Linux网络命名空间的概念及如何使用vethpair连接不同命名空间,实现跨命名空间通信。vethpair是一种虚拟网络设备,用于在两个命名空间间建立通信通道。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值