连接到 unix 域套接字上的 openvpn 管理接口

JDS*_*JDS 4 linux openvpn

这应该非常简单,我想我遗漏了一些明显的东西。

OpenVPN 文档声明您可以在 Unix 域套接字上运行管理接口。好的,没问题,我试过了。

openvpn --dev tun --management /dev/openvpn unix
Run Code Online (Sandbox Code Playgroud)

似乎有效;设备已创建,OpenVPN 启动。

但是,如何连接到管理界面?它不是 TCP,所以 Netcat 将无法工作。我尝试将命令直接回显到套接字并出现错误:

$ echo "help"| /dev/openvpn
bash: /dev/openvpn: No such device or address
Run Code Online (Sandbox Code Playgroud)

我知道我错过了一些基本的东西,但我可以在互联网上找到零个例子,任何人实际连接到 Unix 域套接字上的管理接口。

JDS*_*JDS 6

我自己回答了,发布后 1 分钟。

简短的回答,“使用 socat”

参考:https : //unix.stackexchange.com/questions/26715/how-can-i-communicate-with-a-unix-domain-socket-via-the-shell-on-debian-squeeze

长答案:

$ apt-get install socat
$ socat - UNIX-CONNECT:/dev/openvpn
>INFO:OpenVPN Management Interface Version 1 -- type 'help' for more info
Run Code Online (Sandbox Code Playgroud)

编辑:我最终实际上在做什么

当通过 TCP 的 telnet/netcat 工作得很好时,我不喜欢安装新工具的想法。所以最后我用 TCP 管理监听器配置了 OpenVPN,并阻止(通过防火墙和 hosts.allow)外部访问它监听的端口。即只能连接到本地主机上的 OpenVPN 管理端口。