通过 socat 将 tcp 转发到 d-bus 失败

通过 socat 将 tcp 转发到 d-bus 失败

我正在尝试为我的本地会话 dbus 守护进程构建一个 tcp 代理。我做到了

 socat TCP-LISTEN:55556,reuseaddr,fork,range=127.0.0.1/32 ABSTRACT-CONNECT:/run/user/1000/bus

但是,DBUS_SESSION_BUS_ADDRESS=tcp:host=127.0.0.1,port=55556 notify-send hello给出了这个错误

2018/12/31 03:11:56 socat[4316] E connect(5, AF=1 "\0/run/user/1000/bus", 21): Connection refused
2018/12/31 03:11:56 socat[4317] E connect(5, AF=1 "\0/run/user/1000/bus", 21): Connection refused

我该如何解决这个问题?我根本不关心安全问题,因为这是一个离线盒子。

答案1

您应该验证ss -xnlunix 套接字是否以 开始显示,以@使其成为抽象套接字。我敢打赌没有这样的@。我有两个运行完全不同版本的系统。一种是使用具有随机条目的抽象套接字进行监听,@/tmp/dbus-QVAhTtSPNB另一种是使用 unix 进行监听(摘要)套接字与/run/user/1000/bus.

正确的命令可能是:

 socat TCP-LISTEN:55556,reuseaddr,fork,range=127.0.0.1/32 UNIX-CONNECT:/run/user/1000/bus

相关内容