Рейтинг:5

Linux list all network namespaces

флаг za

I want to list all the network namespaces on my Linux machine. So far I found two recommended ways to do this:

ip netns list

And

lsns --type=net

Unfortunately both commands do not list all the namespaces! The first only lists the namespaces found in /var/run/netns and the second will only find namespaces with at least one process running in it. Docker for example will save its namespaces in /var/run/docker/netns (so they are not shown by ip netns) and there are some namespaces without a running process (so they are not shown by lsns). Is there any command that prints ALL the network namespaces on the host?

A.B avatar
флаг cl
A.B
связанные: https://unix.stackexchange.com/questions/505112/how-do-i-find-all-interfaces-that-have-been-configured-in-linux-включая-те
Garuno avatar
флаг za
Значит, нет встроенного инструмента для этого? Мне нужно очистить файловую систему /proc, чтобы получить все пространства имен?
Рейтинг:0
флаг mx

Чтобы включить сетевые пространства имен запущенных контейнеров Docker в список IP-сетей вы можете просто установить символическую ссылку (также известную как softlink) следующим образом:

ln -Ts /var/run/docker/netns /var/run/netns

К сожалению, в Linux нет универсальной команды для вывода списка всех сетевых пространств имен. Вы можете использовать следующий скрипт Python, чтобы перечислить по крайней мере все пространства имен, которые связаны в /var/run/netns: https://github.com/Intika-Linux-Namespace/Namespace-Lister

Для приложений, использующих другие пути, вам придется изменить этот скрипт.

Garuno avatar
флаг za
Это решит проблему только для конкретного случая Docker. Как узнать, создает ли какое-либо другое приложение пространства имен в других местах?
digijay avatar
флаг mx
Привет @Garuno, посмотри мое редактирование. Кажется, что для этого нет общего решения, но, по крайней мере, есть сценарий, который вы можете настроить в соответствии со своими потребностями. Надеюсь, это поможет!
Рейтинг:0
флаг cn

Не по имени, но вы можете найти все используемые пространства имен, заглянув в /proc/{PID}/ns/net

Этот сценарий (запущенный от имени пользователя root) показывает список используемых идентификаторов сетевых пространств имен на машине:

find /proc/ -name ns 2>/dev/null |xargs -I NS ls -la NS/net 2> /dev/null| awk -F '->' '{print $2}'|сортировка -u
A.B avatar
флаг cl
A.B
только смонтированные пространства имен не будут найдены
George Shuklin avatar
флаг cn
Да, этот трюк работает только с пространствами имен, используемыми процессами.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.