提示: ip-netns - process network namespace management
ip-netns(8) — Linux manual page。
ip [ OPTIONS ] netns { COMMAND | help }
ip netns [ list ]
ip netns add NETNSNAME
ip netns attach NETNSNAME PID
ip [-all] netns del [ NETNSNAME ]
ip netns set NETNSNAME NETNSID
NETNSID := auto | POSITIVE-INT
ip netns identify [ PID ]
ip netns pids NETNSNAME
ip [-all] netns exec [ NETNSNAME ] command...
ip netns monitor
ip netns list-id [ target-nsid POSITIVE-INT ] [ nsid POSITIVE-INT ]
一、
该指令为配置的自动化处理,意思是为无法意识到应用程序的网络命名空间文件约定:文件可以通过创建一个挂载并且将每个命名空间的配置文件绑定到他们在/etc路径下的最传统的位置。
该指令将展示所有位于/var/run/netns下的网络命名空间
如果 /var/run/netns下没有NAME(命名空间的名字),该指令就将新建一个网络命名空间。并且名字为NAME
如果 /var/run/netns下没有NAME(命名空间的名字),该指令将进程PID的网络名称空间附加到NAME,就像它是使用ip netns创建的一样。
如果NAME存在于/var/run/netns中,则将其卸载并将其的挂载点移除。如这个是网络命名空间的最后一个使用者。该网络命名空间将被释放,并且在该网络命名空间下的物理设备将被移动到默认的网络命名空间(也就是全局的),否则的话只有当该命名空间没有没有其他使用者且没有其他挂载点时才能被删除(如 ip netns exec指令)。
如果使用 -all 选项将会删除所有命名空间。
ip -all netns delete
有可能会出现物理设备丢失的情况当设备向netns移动的过程中,但是这个网络命名空间正在被进程删除如下:
$ ip netns add net0
$ ip link set dev eth0 netns net0
$ ip netns exec net0 SOME_PROCESS_IN_BACKGROUND
$ ip netns del net0
只有在SOME_PROCESS_IN_BACKGROUND退出或者被杀死之后,eth0才会出在默认命名空间。为了防止这种情况,你必须将运行在该命名空间关联的进程杀死,在杀死命名空间之前。
$ ip netns pids net0 | xargs kill
$ ip netns del net0
这个命令将为网络命名空间分配一个ID,这个ID仅在当前的网络命名空间内有效。
如果指定了关键字“ auto”,则将选择一个可用的nsid。 内核将在某些网络链接消息中使用此ID。如果内核需要时未分配ID,则内核会自动分配该ID。 分配后,将无法更改。
此命令遍历/ var / run / netns并查找指定进程的网络名称空间的所有网络名称空间名称,如果未指定PID,则将使用当前进程。
此命令遍历proc并查找所有具有命名网络命名空间作为其主要网络名称空间的进程。
此命令允许不知道网络命名空间的应用程序在默认网络命名空间之外的其他程序中运行,并且指定网络命名空间的所有配置都出现在惯常的全局位置中。网络命名空间和绑定安装用于将文件从其网络中移出 将网络命名空间特定的位置恢复为其默认位置,而不影响其他进程。如果指定了-all选项,则即使在其中某些cmd失败的情况下,cmd也会在每个命名的网络命名空间上同步执行。 网络命名空间名称打印在每个执行的cmd上。
此命令监视网络命名空间名称添加和
删除事件,并为它看到的每个事件打印一行。
网络命名空间ID用于标识对等网络名称空间。 此命令显示当前网络名称空间的nsid,并提供相应的iproute2 netns名称(来自/ var / run / netns)(如果有的话).target-nsid选项用于显示指定网络名称空间的nsid,而不是当前网络名称空间。 此target-nsid是当前网络名称空间中的nsid。nsid选项可仅显示此nsid。 它是当前网络名称空间中的nsid。 与target-nsid选项结合使用,它可以将特定的nsid从当前网络名称空间转换为target-nsid网络名称空间的nsid。
EXAMPLES top
ip netns list
Shows the list of current named network namespaces
ip netns add
Creates a network namespace and names it
ip netns exec ip link set lo up
Bring up the loopback interface in the network namespace.
ip netns add foo
ip netns add bar
ip netns set foo 12
ip netns set bar 13
ip -n foo netns set foo 22
ip -n foo netns set bar 23
ip -n bar netns set foo 32
ip -n bar netns set bar 33
ip netns list-id target-nsid 12
Shows the list of nsids from the network namespace foo.
ip netns list-id target-nsid 12 nsid 13
Get nsid of bar from the network namespace foo (result is 23).