`ip netns` 和 `unshare` 如何保存它们的永久网络名称空间?他们可以互相利用吗?

How do `ip netns` and `unshare` save their persistent network namespaces? Can they use each others?

要使用 unshare 创建持久命名空间,您可以使用语法:

touch /root/mynetns1
unshare --net==/root/mynetns1

要使用 ip 创建持久命名空间,您可以使用语法:

ip netns add mynetns2

ip 命令未列出或无法访问由 unshare 创建的命名空间,反之亦然。

ip 命令在自定义网络命名空间方面要好得多,但是 unshare 命令允许您启动具有多个不同命名空间的程序。理想情况下,我会使用 ip 创建一个命名空间,但使用 unshare 使用其他命名空间启动命令。要做到这一点 unshare 需要能够引用 ip 创建的命名空间,如何做到这一点?

现在我正在使用 ip netns exec mynetns1 unshare [other namespaces] ... 作为 hack,但我更喜欢使用 unshare 更干净地启动。

我还希望我的程序能够与他们单独创建的网络命名空间进行交互,因此有关如何列出和访问他们的网络命名空间的信息也会有所帮助。

unshare --net=/somefileip netns add somename 都创建了一个新的网络名称空间并将其绑定安装到某个地方。唯一的区别是 unshare 将它绑定挂载到您指定的任何文件,而 ip 将它绑定挂载到 /var/run/netns/ 中的新文件。换句话说,如果您使用 /var/run/netns/mynetns1 代替 /root/mynetns1,那么您稍后可以使用 ip.

与其进行交互