这应该非常简单,我想我遗漏了一些明显的东西。
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 域套接字上的管理接口。
我自己回答了,发布后 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 管理端口。