pyroute2包与网络命名空间
发布日期:2021-05-07 18:06:05 浏览次数:21 分类:技术文章

本文共 1173 字,大约阅读时间需要 3 分钟。

pyroute2引起我注意的原因是在uts中调用pyroute2创建命名空间,结果用它创建的命名空间会导致虚拟机网络不通,我正在定位原因,使用driver调用的和导入包调用的会有那些区别?

网络命名空间是否与创建他的进程有关???
网络命名空间

Linux Namespaces机制提供一种资源隔离方案。PID,IPC,Network等系统资源不再是全局性的,而是属于特定的Namespace。每个Namespace里面的资源对其他Namespace都是透明的。要创建新的Namespace,只需要在调用clone时指定相应的flag。Linux Namespaces机制为实现基于容器的虚拟化技术提供了很好的基础,LXC(Linux containers)就是利用这一特性实现了资源的隔离。不同container内的进程属于不同的Namespace,彼此透明,互不干扰。下面我们就从clone系统调用的flag出发,来介绍各个Namespace。

当调用clone时,设定了CLONE_NEWNET,就会创建一个新的Network Namespace。一个Network Namespace为进程提供了一个完全独立的网络协议栈的视图。包括网络设备接口,IPv4和IPv6协议栈,IP路由表,防火墙规则,sockets等等。一个Network Namespace提供了一份独立的网络环境,就跟一个独立的系统一样。一个物理设备只能存在于一个Network Namespace中,可以从一个Namespace移动另一个Namespace中。虚拟网络设备(virtual network device)提供了一种类似管道的抽象,可以在不同的Namespace之间建立隧道。利用虚拟化网络设备,可以建立到其他Namespace中的物理设备的桥接。当一个Network Namespace被销毁时,物理设备会被自动移回init Network Namespace,即系统最开始的Namespace。
根据这段话来推测,命名空间不仅仅在网络上使用,在其他领域也会使用。

from pyroute2 import netns

——————————————————————分割线
下面是关于pyroute2的使用和介绍
安装:
pip install pyroute2

Look, once you set a netns for a process, you can not leave it. So there is only one way: fork a child and run setns in the child. No other solution. It’s not a library feature, but the OS design.

上一篇:linux下的磁盘空间使用
下一篇:sed常用命令

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月30日 03时20分13秒