LINUX.ORG.RU

История изменений

Исправление intelfx, (текущая версия) :

Насколько понимаю, дело в PrivateTmp=true.

Сетевые неймспейсы выглядят как файлик, который ядро выдаёт процессу в /proc/<pid>/ns/net при входе процесса в неймспейс. Добавить другой процесс в неймспейс значит как-либо открыть (из него) тот же файл и передать полученный fd в setns(2). Пока этот файлик имеет имя (т. е. либо в неймспейсе есть хотя бы один процесс, либо файлик куда-то прибинжен) — неймспейс живёт.

Соответственно, ip netns add создаёт неймспейс и биндит /proc/<свой-pid>/ns/net в /var/tmp/netns/<имя>. Ключевое слово — биндит. А у тебя каждый процесс выполняется в отдельном mount namespace.

Это «особенность» работы PrivateTmp=. Оно не использует один mount namespace на все запускаемые процессы, а создаёт отдельный для каждого.

intelfx судя по всему в выходные решил и от ЛОРа заодно отдохнуть.

Не то чтобы. :] Просто вчера весь день развлекался с велосипедом (что подразумевает определённую степень усталости вечером, хе-хе).

Исправление intelfx, :

Насколько понимаю, дело в PrivateTmp=true.

Сетевые неймспейсы выглядят как файлик, который ядро выдаёт процессу в /proc/<pid>/ns/net при входе процесса в неймспейс. Добавить другой процесс в неймспейс значит как-либо открыть (из него) тот же файл и передать полученный fd в setns(2). Пока этот файлик имеет имя (т. е. либо в неймспейсе есть хотя бы один процесс, либо файлик куда-то прибинжен) — неймспейс живёт.

Соответственно, ip netns add создаёт неймспейс и биндит /proc/<свой-pid>/ns/net в /var/tmp/netns/<имя>. Ключевое слово — биндит. А у тебя каждый процесс выполняется в отдельном mount namespace.

Это «особенность» работы PrivateTmp=. Оно создаёт отдельный mount namespace для каждого запускаемого процесса, а не использует общий для всех.

intelfx судя по всему в выходные решил и от ЛОРа заодно отдохнуть.

Не то чтобы. :] Просто вчера весь день развлекался с велосипедом (что подразумевает определённую степень усталости вечером, хе-хе).

Исходная версия intelfx, :

Насколько понимаю, дело в PrivateTmp=true.

Сетевые неймспейсы выглядят как файлик, который ядро выдаёт процессу в /proc/<pid>/ns/net при входе процесса в неймспейс. Добавить другой процесс в неймспейс значит как-либо открыть (из него) тот же файл и передать полученный fd в setns(2). Пока этот файлик имеет имя (т. е. либо в неймспейсе есть хотя бы один процесс, либо файлик куда-то прибинжен) — неймспейс живёт.

Соответственно, ip netns add создаёт неймспейс и биндит /proc/<свой-pid>/ns/net в /var/tmp/netns/<имя>. Ключевое слово — биндит. А у тебя каждый процесс выполняется в отдельном mount namespace.

intelfx судя по всему в выходные решил и от ЛОРа заодно отдохнуть.

Не то чтобы. :] Просто вчера весь день развлекался с велосипедом (что подразумевает определённую степень усталости вечером, хе-хе).