Назад | Перейти на главную страницу

Как запустить команду в сетевом пространстве имен другого процесса?

В собственном сетевом пространстве имен выполняется процесс. Я хотел бы подключиться к машине по telnet и запустить команду в этом пространстве имен сети процесса, что-то вроде этого (17543 - это pid процесса с его собственным сетевым пространством имен):

# 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

Он жалуется, что сетевого пространства имен нет, но похоже, что файл есть. Как я могу запустить команду в другом сетевом пространстве имен процессов?

$ sudo nsenter -t 16882 -n ip link show

где IP ссылка показать - это пример команды для запуска в сетевом пространстве имен целевой программы с pid 16882.

-t флаг предназначен для указания pid целевой программы

-n флаг обозначает сетевое пространство имен целевой программы

ip netns exec ожидает название сетевого пространства имен, а не пути к файлу.

Вы можете найти имя сетевого пространства имен процесса, используя ip netns identify <pid>.

P.S. ifconfig не может быть установлен в современных системах Linux; использовать эквивалент ip команды вместо этого.