包装 tcp 侦听器脚本,以便它使用 sock 文件

包装 tcp 侦听器脚本,以便它使用 sock 文件

我有一个程序运行时,开始在端口 12345 上列出

$ ./cool_script.pl

我的 Linux 管理员说打开端口违反了政策。他说我可以使用 ~/cool_script.sock(unix 域套接字)进行通信。显然,他的 nginx 服务器可以像 tcp 端口一样读取和写入 sock。

无论如何,有没有办法包装可执行文件(。/cool_script.pl),以便它打开监听端口的尝试重定向到.sock文件。

我尝试过的:阅读一些关于socat的文档

答案1

这个例子应该适合你:https://coderwall.com/p/c3wyzq/forwarding-tcp-traffic-to-a-unix-socket

基本上:

Forwarding port 15432 to socket /srv/mongodb-27017.sock:

socat -d -d TCP4-LISTEN:15432,fork UNIX-CONNECT:/srv/mongodb-27017.sock

答案2

你需要修改程序的工作方式。让它监听Unix 套接字而不是 TCP。假设程序是动态链接到标准库的(几乎所有程序都是这样),你不需要改变程序本身,只要改变运行它的方式就行了。你可以这样做LD_PRELOAD,通过加载 TCP 套接字打开函数的包装器来打开 Unix 套接字。ttu正是这样做的(根据它的文档,我从未使用过它)。

相关内容