如何将接口移出网络名称空间?


10

如果我将接口暂时移入

ip link set eth10 netns myns

那么它将不再在根目录中可见,而仅在名称空间myns中可见。

我如何将其移回,类似(这些显然不存在):

ip link unset eth10

也许

ip link set eth10 netns root

或类似的?

Answers:


13

我找到了答案。当然,您不能从网络内部做到这一点。但是,如果您ip netns exec ....在根网络名称空间中执行,则所有工作都可以进行。

ip netns exec <PID> ip link set eth10 netns 1

然后就可以了!在输入netns之前,将我们分配给它的PID(在这种情况下为1)置于执行命令(包装器)的上下文中。做完了!


我们希望“ 1”实际上是在引用“根”网络名称空间...
TheDiveO

将eth10返回到默认的网络名称空间:ip netns exec myns ip链接设置eth10 netns默认
Ted Feng

在我的Debian 10系统上,“默认”确实确实可以正常ip netns exec testns ip link set tun0 netns 1工作。而“默认”则为Error: argument "default" is wrong: Invalid "netns" value
保罗

进一步的混乱表明这些是id。如果您已经创建一个额外的命名空间,将有ID为2
保罗

5

您可以使用该ip netns delete功能。从手册页:

ip [-all] netns delete [名称]-删除网络名称空间的名称

如果NAME存在于/ var / run / netns中,则将其挂载并删除挂载点。如果这是网络名称空间的最后一个用户,则将释放网络名称空间,并将所有物理设备移至默认设备,否则网络名称空间将持续存在,直到没有更多用户为止。如果在另一个安装名称空间中使用了安装点,则ip netns delete可能会失败。

它不能用于所有目的,但这绝对是最简单的方法。


4

基于deitch的回答对我有用的是从定制netns执行命令:

ip netns exec myns ip link set eth10 netns 1

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.