Вы можете использовать ip netns exec
с bash
вместо использования nsenter
, т.е.:
ip netns exec [namespace name] bash
Это позволит вам войти в интерактивный сеанс оболочки, в котором файлы конфигурации сети, относящиеся к пространству имен -, автоматически -привязываются к своим (глобальным )местоположениям по умолчанию (, не затрагивая другие сеансы ). ].
Следующее взято из справочной страницыip netns
:
For applications that are aware of network namespaces, the convention is to look for global network configuration files first in **/etc/netns/**NAME/ then in /etc/. For example, if you want a different version of /etc/resolv.conf for a network namespace used to isolate your vpn you would name it /etc/netns/myvpn/resolv.conf.
ip netns exec automates handling of this configuration, file convention for network namespace unaware applications, by creating a mount namespace and bind mounting all of the per network namespace configure files into their traditional location in /etc.
Обратите особое внимание на различие между сетевыми -приложениями, осведомленными о пространстве имен, и сетевыми -приложениями , не осведомленными о пространстве имен .
С другой стороны,nsenter
справочные страницы , кажется, не упоминают об этом различии (, в частности, я искал строки "aware", "resolv", ".conf" и "/ etc" и не нашел результатов ). Похоже, это говорит о том, что утилита nsenter
не выполняет такой же автоматической обработки приложений, не знающих пространства имен.
В дополнение к Сетевым пространствам имен вы также можете просмотреть Пространства имен пользователей и Пространства имен монтирования . И если вам нужна дополнительная изоляция за пределами DNS, вы также можете рассмотреть возможность контейнеризации, например. Контейнеры LXC , Docker или даже полноценная виртуальная машина.
Так что я сделал это, поковырявшись с ним пару часов.
Ваши инструкции верны. Однако GNOME не разрешает подключение VNC , если ваш экран заблокирован . Таким образом, используя loginctl list-sessions
, вы можете перечислить свои сеансы. Найдите графический (с идентификатором seat0
или похожим )и разблокируйте его с помощью loginctl unlock-session X
, где X
происходит из столбца ID
в list-sessions
. Для проверки вы можете loginctl show-session X
и у вас должно быть LockedHint=no
. Как только это будет сделано, попробуйте войти через VNC. Для меня это сработало сразу.
Напомню все шаги:
gsettings set org.gnome.desktop.remote-desktop.vnc auth-method 'password'
gsettings set org.gnome.desktop.remote-desktop.vnc view-only false
echo -n 'password' | secret-tool store --label="GNOME Remote Desktop VNC password" "xdg:schema" "org.gnome.RemoteDesktop.VncPassword"
systemctl --user start gnome-remote-desktop.service
loginctl unlock-session $(loginctl --no-legend --value list-sessions | awk '/seat/ { print $1}')
Не нужно было разрешать сетевой интерфейс или что-то еще