`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=/somefile
和 ip netns add somename
都创建了一个新的网络名称空间并将其绑定安装到某个地方。唯一的区别是 unshare
将它绑定挂载到您指定的任何文件,而 ip
将它绑定挂载到 /var/run/netns/
中的新文件。换句话说,如果您使用 /var/run/netns/mynetns1
代替 /root/mynetns1
,那么您稍后可以使用 ip
.
与其进行交互
要使用 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=/somefile
和 ip netns add somename
都创建了一个新的网络名称空间并将其绑定安装到某个地方。唯一的区别是 unshare
将它绑定挂载到您指定的任何文件,而 ip
将它绑定挂载到 /var/run/netns/
中的新文件。换句话说,如果您使用 /var/run/netns/mynetns1
代替 /root/mynetns1
,那么您稍后可以使用 ip
.