Подключение к D-Bus в сетевом пространстве имен

Я использую сетевые пространства имен, чтобы захватить сетевой трафик одного процесса. Пространство имен подключается через «хост» через пару veth и имеет сетевое подключение через NAT. Пока это работает для IP-трафика и называется сокетами домена Unix.

Проблема возникает, когда программа должна взаимодействовать с шиной сеанса D-Bus. Демон D-Bus прослушивает абстрактный сокет, как указано в этой переменной среды:

  • Как очистить конфигурацию dbus?
  • Как разрешить службе non-root systemd использовать dbus для операции BLE
  • Не удается найти db-настройки Daemon - gmusicbrowser в Debian Jessie с Xfce
  • Debian и Systemd: ошибка прерывания цикла заказа
  • Почему MV (1) копирует объекты, если разрешение на перенос отклонено?
  • Почему я не могу запускать приложения Gnome через удаленный сеанс SSH?
  • DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-jIB6oAy5ea,guid=04506c9a7f54e75c0b617a6c54e9b63a 

    Похоже, что абстрактное пространство имен сокетов домена Unix отличается в пространстве имен. Есть ли способ получить доступ к этому сеансу D-Bus из сетевого пространства имен?

  • Как запустить плазменный скрипт KDE из командной строки без GUI?
  • Устранение ошибки доступа к шине dbus
  • Что я слышу о восстановлении First Edition Unix?
  • Почему по умолчанию umask - 002 или 022 во многих Unix-системах? Кажется неубедительным по умолчанию
  • Подавать весь трафик через OpenVPN только для определенного сетевого пространства имен
  • Разрешить Rygel разговаривать с NetworkManager через DBUS?
  • One Solution collect form web for “Подключение к D-Bus в сетевом пространстве имен”

    Подключение к демона DBus, прослушивание абстрактного сокета Unix в другом пространстве имен в сети, невозможно. Такие адреса могут быть идентифицированы в ss -x через адрес, содержащий @ :

     u_str ESTAB 0 0 @/tmp/dbus-t00hzZWBDm 11204746 * 11210618 

    В качестве обходного пути вы можете создать нечерный Unix или IP-сокет, который проксирует к абстрактному сокету Unix. Это нужно сделать за пределами пространства имен в сети. Внутри пространства имен сети вы можете подключиться к этому адресу. Например, предположив вышеописанный адрес сокета, запустите это за пределами пространства имен:

     socat UNIX-LISTEN:/tmp/whatever,fork ABSTRACT-CONNECT:/tmp/dbus-t00hzZWBDm 

    Затем из пространства имен вы можете подключиться, установив эту переменную среды:

     DBUS_SESSION_BUS_ADDRESS=unix:path=/tmp/whatever 
    Linux и Unix - лучшая ОС в мире.