如何虚拟化 Linux 应用程序正在侦听的 IP 端口?

Posted

技术标签:

【中文标题】如何虚拟化 Linux 应用程序正在侦听的 IP 端口?【英文标题】:How to virtualize the IP port a Linux application is listening on? 【发布时间】:2011-08-17 14:08:22 【问题描述】:

我有一个没有源的 Linux 应用程序。它侦听特定端口上的传入 TCP 连接。由于设计错误,一次只能处理一个连接。

我想运行这个应用程序的多个实例,并让他们每个人都认为他们拥有该端口,通过虚拟化他们的套接字创建调用——即提供一个重定向层,它将传入连接分配到这些应用程序池,否则它们将无法运行,因为它们正在争夺那个端口。

我很高兴编写胶水代码,但似乎已经有一些不应该重新发明的用于创建套接字的拦截解决方案。有吗?

【问题讨论】:

【参考方案1】:

您应该能够使用带有LD_PRELOAD 的库来覆盖应用程序对套接字 API 的使用。您可能希望从查看 socksify 实用程序的代码开始,例如 tsocks 或来自 dante 的 socksify 作为起点。

事实上,您甚至可以设置一个 socks 服务器并使用其中一个现有实用程序来解决该问题。

【讨论】:

以上是关于如何虚拟化 Linux 应用程序正在侦听的 IP 端口?的主要内容,如果未能解决你的问题,请参考以下文章

释放 TCP/IP 端口?

释放 TCP/IP 端口?

boost.asio 如何发现我的服务器应用程序正在侦听哪个端口?

如何在给虚拟机设置静态IP

如何在linux虚拟机修改ip地址

如果应用程序正在侦听“localhost”,我们如何访问网络外的节点服务器?