1 .TH IP\-NETNS 8 "16 Jan 2013" "iproute2" "Linux"
3 ip-netns \- process network namespace management
12 .RI " { " COMMAND " | "
16 .BR "ip netns" " [ " list " ]"
23 .B ip [-all] netns del
24 .RI "[ " NETNSNAME " ]"
31 .BR "ip netns identify"
39 .BR "ip [-all] netns exec "
40 .RI "[ " NETNSNAME " ] " command ...
43 .BR "ip netns monitor"
46 .BR "ip netns list-id"
49 A network namespace is logically another copy of the network stack,
50 with its own routes, firewall rules, and network devices.
52 By default a process inherits its network namespace from its parent. Initially all
53 the processes share the same default network namespace from the init process.
55 By convention a named network namespace is an object at
56 .BR "/var/run/netns/" NAME
57 that can be opened. The file descriptor resulting from opening
58 .BR "/var/run/netns/" NAME
59 refers to the specified network namespace. Holding that file
60 descriptor open keeps the network namespace alive. The file
61 descriptor can be used with the
63 system call to change the network namespace associated with a task.
65 For applications that are aware of network namespaces, the convention
66 is to look for global network configuration files first in
67 .BR "/etc/netns/" NAME "/"
70 For example, if you want a different version of
72 for a network namespace used to isolate your vpn you would name it
73 .BR /etc/netns/myvpn/resolv.conf.
76 automates handling of this configuration, file convention for network
77 namespace unaware applications, by creating a mount namespace and
78 bind mounting all of the per network namespace configure files into
79 their traditional location in /etc.
82 .B ip netns list - show all of the named network namespaces
84 This command displays all of the network namespaces in /var/run/netns
87 .B ip netns add NAME - create a new named network namespace
89 If NAME is available in /var/run/netns/ this command creates a new
90 network namespace and assigns NAME.
93 .B ip [-all] netns delete [ NAME ] - delete the name of a network namespace(s)
95 If NAME is present in /var/run/netns it is umounted and the mount
96 point is removed. If this is the last user of the network namespace the
97 network namespace will be freed and all physical devices will be moved to the
98 default one, otherwise the network namespace persists until it has no more
99 users. ip netns delete may fail if the mount point is in use in another mount
104 option was specified then all the network namespace names will be removed.
106 It is possible to lose the physical device when it was moved to netns and
107 then this netns was deleted with a running process:
113 $ ip link set dev eth0 netns net0
116 $ ip netns exec net0 SOME_PROCESS_IN_BACKGROUND
123 and eth0 will appear in the default netns only after SOME_PROCESS_IN_BACKGROUND
124 will exit or will be killed. To prevent this the processes running in net0
125 should be killed before deleting the netns:
129 $ ip netns pids net0 | xargs kill
136 .B ip netns set NAME NETNSID - assign an id to a peer network namespace
138 This command assigns a id to a peer network namespace. This id is valid
139 only in the current network namespace.
140 If the keyword "auto" is specified an available nsid will be chosen.
141 This id will be used by the kernel in some netlink messages. If no id is
142 assigned when the kernel needs it, it will be automatically assigned by
144 Once it is assigned, it's not possible to change it.
147 .B ip netns identify [PID] - Report network namespaces names for process
149 This command walks through /var/run/netns and finds all the network
150 namespace names for network namespace of the specified process, if PID is
151 not specified then the current process will be used.
154 .B ip netns pids NAME - Report processes in the named network namespace
156 This command walks through proc and finds all of the process who have
157 the named network namespace as their primary network namespace.
160 .B ip [-all] netns exec [ NAME ] cmd ... - Run cmd in the named network namespace
162 This command allows applications that are network namespace unaware
163 to be run in something other than the default network namespace with
164 all of the configuration for the specified network namespace appearing
165 in the customary global locations. A network namespace and bind mounts
166 are used to move files from their network namespace specific location
167 to their default locations without affecting other processes.
171 option was specified then
173 will be executed synchronously on the each named network namespace even if
175 fails on some of them. Network namespace name is printed on each
180 .B ip netns monitor - Report as network namespace names are added and deleted
182 This command watches network namespace name addition and deletion events
183 and prints a line for each event it sees.
186 .B ip netns list-id - list network namespace ids (nsid)
188 Network namespace ids are used to identify a peer network namespace. This
189 command displays nsid of the current network namespace and provides the
190 corresponding iproute2 netns name (from /var/run/netns) if any.
196 Shows the list of current named network namespaces
201 Creates a network namespace and names it vpn
204 ip netns exec vpn ip link set lo up
206 Bring up the loopback interface in the vpn network namespace.
214 Original Manpage by Eric W. Biederman