小编Ole*_*olf的帖子

在无头系统上启动共享会话 D-Bus 的 systemd 服务

我需要帮助在无头 Linux 系统上启动通过会话(不是系统)D-Bus 进行通信的服务。关键是没有人会登录无头系统。

到目前为止,我已经能够在三个不同的终端中代表未登录的用户(“其他用户”)启动 D-Bus 守护程序并测试 D-Bus 通信:

在第一个终端中,我为“otheruser”启动了一个 D-Bus 守护进程:

$ sudo -u otheruser dbus-daemon --session --print-address 1
unix:abstract=/tmp/dbus-a5cU7r4IHc,guid=6c0a9bbfd02f5f68da0fe32f5a5e0a48
Run Code Online (Sandbox Code Playgroud)

在第二个终端中,我使用上述 DBUS_SESSION_BUS_ADDRESS 响应启动 D-Bus 服务器应用程序:

$ sudo -u otheruser DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-a5cU7r4IHc,guid=6c0a9bbfd02f5f68da0fe32f5a5e0a48" /usr/bin/my-dbus-service
Run Code Online (Sandbox Code Playgroud)

然后,在第三个终端中,我可以测试连接:

$ sudo -u otheruser DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-a5cU7r4IHc,guid=6c0a9bbfd02f5f68da0fe32f5a5e0a48" gdbus introspect --session --dest com.mycompany.myappname --object-path /com/mycompany/interface
Run Code Online (Sandbox Code Playgroud)

但是,我想通过 systemd 启动 D-Bus 服务器应用程序以及一些客户端 D-Bus 服务。如何通过 systemd 启动 D-Bus 会话,以便将其 DBUS_SESSION_BUS_ADDRESS 环境变量传播到“otheruser”的 D-Bus 服务器和客户端服务?

一种可能的解决方案可能是将 dbus-daemon 的输出通过管道传输到“somefile”,然后在启动 D-Bus 服务器和客户端之前设置 DBUS_SESSION_BUS_ADDRESS=$(cat somefile)。这对我来说似乎有点太尴尬了;特别是因为我知道系统D-Bus 连接的 systemd 服务文件中的“Busname”指令有一些神奇之处。如何为“其他用户”正确启动 systemd 服务,以便这些 systemd 服务可以与会话 D-Bus 接口进行通信?

linux headless dbus systemd

14
推荐指数
1
解决办法
2万
查看次数

在bind9中返回特定域上的A记录,但不返回AAAA记录

我已经使用 root-hints 方法(像这样)设置了一个带有 bind9 的缓存 DNS 服务器。它按预期工作 - 但是,我们的 IPv6 流量通过我所在国家/地区之外的网关,这使 Netflix 认为我们是从另一个国家/地区访问的,这会阻止我的孩子观看他们最喜欢的节目。因此,我在想,如果我可以阻止 bind9 返回 netflix.com 的任何 AAAA 记录,客户端将只尝试 IPv4 连接到 Netflix。

也就是说:如何配置bind9,以便在为 netflix.com 返回有效的 A 记录结果时抑制对 netflix.com 的 AAAA 记录查找?

我意识到我可以创建一个仅包含 Netflix 域的区域文件,并让它包含我能找到的 netflix.com 的所有 A 记录,而不包含 AAAA 记录。但我想知道上面的情况是否可行,这样我就不必更新区域文件中的 A 记录。

domain-name-system bind

5
推荐指数
2
解决办法
8096
查看次数

标签 统计

bind ×1

dbus ×1

domain-name-system ×1

headless ×1

linux ×1

systemd ×1