ネットワークネームスペースからD-Busに接続する

ネットワークネームスペースからD-Busに接続する

単一プロセスのネットワークトラフィックをキャプチャできるように、ネットワークネームスペースを使用しています。名前空間は、vethペアを介して「ホスト」を介して接続され、NATを介してネットワーク接続を介して接続されます。これまでは、IPトラフィックと名前付きUnixドメインソケットで動作していました。

プログラムが D-Bus セッションバスと通信する必要がある場合に問題が発生します。 D-Busデーモンは、この環境変数で指定された抽象ソケットを受け取ります。

DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-jIB6oAy5ea,guid=04506c9a7f54e75c0b617a6c54e9b63a

抽象Unixドメインソケットの名前空間は、名前空間の点で異なるようです。ネットワークネームスペースからこのD-Busセッションにアクセスする方法はありますか?

ベストアンサー1

Linuxネットワークネームスペース IPネットワーク実際にUnixソケットを切り離し、dbusがそれを使用している間に新しいネームスペースからアクセスできないようにしたので、Unixソケットへのアクセスを維持する機能を想像できますが、2019年5月現在、この機能はまだ実装されていません。 Unixソケットは次のように見えます。netstat -a -p --unix

代替ソリューションdbusソケットをプロキシするために使用されますsocat。詳しく説明します。回答そしてここ

代替ソリューションdbusに必要な通信に応じて、新しいセッションバスインスタンスを作成できます。dbus スタート名前空間内でdbus-launch my-command-or-app他のメソッドを使用できることに注意してください。dbus実行セッション

代替ソリューション netnsの実行ルートアクセスなしでネームスペースでアプリケーション/コマンドを実行できます(例:火災刑務所できる)しかし、socatまた、最初のソリューションのように自動化された方法でdbusをプロキシすることができ、rootアクセスは必要ありません。

代替ソリューション xdg-dbus-エージェントこれはルートなしで行うことができ、追加のオプション(フィルタリングなど)がたくさんあります...単一のdbusロケーションへのアクセスを許可したい場合は、セキュリティに関してこれが最善の選択です。このアプリケーションが起動します。分散化主なディストリビューションはFirejailの一部であるため、ソースからビルドする必要はないかもしれません。マニュアルページを見つけることができます。ここまたは、man xdg-dbus-proxyアプリがインストールされている場合の使用方法は次のとおりです。

ホストマシンから:xdg-dbus-proxy $DBUS_SESSION_BUS_ADDRESS /tmp/proxybus または xdg-dbus-proxy $DBUS_SESSION_BUS_ADDRESS /tmp/proxybus --filter --talk=org.foo.bar --see=org.gtk.* --own=org.my.name

名前空間から:DBUS_SESSION_BUS_ADDRESS=unix:path=/tmp/proxybus app-using-dbus

おすすめ記事