В собственном сетевом пространстве имен выполняется процесс. Я хотел бы подключиться к машине по 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
команды вместо этого.