gpt4 book ai didi

bash - 使用 unshare 在现有网络命名空间中启动进程?

转载 作者:行者123 更新时间:2023-12-04 16:55:22 25 4
gpt4 key购买 nike

我想使用 PID、UTS、IPC 和 NET 的隔离命名空间启动一个进程。但是,在进程内部,要正确设置网络,必须在主机上使用 veth 适配器配置网络命名空间(以便它们出现在隔离进程中)。所以,我使用 ip netns add vnet1 进行了网络设置.我想为我的进程使用该网络命名空间并为其提供 PID 隔离等。我知道我可以使用 ip nets exec在该命名空间中执行一个进程,但我还想要其他命名空间隔离。有没有办法用 unshare 做到这一点?还是我需要采取另一种方法?

最佳答案

当您运行时 ip netns add vnet1它将在 /run/netns 创建一个对象所以在这种情况下 /run/netns/vnet1将被创建。
现在,当您unshare您的程序,您可以指定现有命名空间的路径。所以,也许像这样。

$ ip netns add vnet1
$ ls /run/netns/
vnet1
$ unshare --net=/run/netns/vnet1 --pid --uts --ipc --fork bash
$ ip a
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
link/sit 0.0.0.0 brd 0.0.0.0
可以看到只有 lo并且没有其他接口(interface)意味着我们的 bash 进程现在在 vnet1网络命名空间。

关于bash - 使用 unshare 在现有网络命名空间中启动进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67971506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com