How to run a command in another process's network namespace?
Solution 1
$ sudo nsenter -t 16882 -n ip link show
where ip link show is an example of a command to run in the network namespace of the target program with pid 16882.
-t flag is for specifying the target program's pid
-n flag stands for network namespace of the target program
Solution 2
ip netns exec
expects the name of the network namespace, not a file path.
You can find the network namespace name of a process using ip netns identify <pid>
.
P.S. ifconfig
may not be installed on modern Linux systems; use equivalent ip
commands instead.
Related videos on Youtube
![Admin](/assets/logo_square_200-5d0d61d6853298bd2a4fe063103715b4daf2819fc21225efa21dfb93e61952ea.png)
Admin
Updated on September 18, 2022Comments
-
Admin almost 2 years
There is a process running in its own network namespace. I would like to telnet to the machine and run a command in this process network namespace, something like that (17543 is the pid of the process with its own network namespace):
# ip netns exec /proc/17543/ns/net ifconfig Cannot open network namespace "/proc/17543/ns/net": No such file or directory # ls /proc/17543/ns/net /proc/17543/ns/net
It complains that the network namespace is not there, but it looks that the file is there. How can I run a command in another process network namespace?
-
A.B over 5 yearsIf the namespace wasn't setup with
ip netns
, thenip netns
can't be used. Eithernsenter
is required, or mounting/proc/17543/ns/net
at the proper place (on a dummy file in /var/run/netns/ ) to makeip netns
believe it created it, can work. I do the later often to link a running lxc container with anip netns
name for convenience.