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

Как запросить и изменить сетевое пространство имен в Linux?

Мне было интересно, есть ли способ

  1. Запросить сетевое пространство имен, в котором находится текущая оболочка
  2. Изменить текущее сетевое пространство имен текущей оболочки

Я знаю, что могу делать такие вещи, как

sudo ip netns exec <namespace_name> <some command>

для выполнения определенной команды в определенном сетевом пространстве имен, но я думал о чем-то вроде

:~$ sudo query_current_namespace
some_namespace
:~$ sudo change_current_namespace_to other_namespace
:~$ sudo query_current_namespace
other_namespac
:~$ dothings in newnamespace

Точно так же, как изменение корневого каталога в какой-то подкаталог, поэтому мне не придется добавлять к каждой команде префикс sudo ip netns exec <namespace> штуковина.

Поиск в сети выглядит так, будто мне придется написать свою собственную маленькую программу C, как предложено в этом сообщении в блоге. Есть ли уже "стандартный" инструмент для этого?

Редактировать: Я только что обнаружил, что могу сделать

sudo ip netns exec <namespace> bash

что даст мне корневую оболочку в новом пространстве имен. Итак, почти готово, но как мне запросить текущее пространство имен?

См. Страницу руководства:

   ip netns identify PID - Report network namespaces names for process
       This command walks through /var/run/netns and finds all the network
       namespace names for network namespace of the specified process.

Итак, вы бы сделали что-то вроде:

ip netns identify $$