1

我想将 xinetd 连接转发到另一个本地端口(比如 12345)。我的解决方案基于 CentOS/Redhat 文档 Chapter 17. TCP Wrappers and xinetd, article 17.4.3.3。在示例中,配置启动了一个守护进程并将流量重定向到主机:端口。该文档说它也应该能够转发到同一系统上的不同端口。

我目前的目标是在端口 12345 上的任何连接上启动一个守护进程(比如 testmpp),并将流重定向到特定端口(比如 54321)。棘手的一点是我不希望守护程序(testsmpp)从 STDIN 读取,而是应该能够从 xinetd 将流量转发到的端口读取。

我在 /etc/service 下创建了一个服务,例如

testsmpp    12345/tcp

我对守护进程的 xinetd 配置是

service testsmpp
{
    sock_type =     stream
    protocol =      tcp
    wait =          no
    user =          root
    server =        /home/me/bin/testsmpp        
    redirect =      54321
}

testsmpp 侦听端口 54321。问题是当从外部建立连接时,xinetd 启动守护程序但不将流量转发到 54321。一旦服务器启动,我可以直接连接到 54321 端口,但通过 xinetd 建立的连接(在端口 12345 ) 不转发。

服务器和重定向标签是互斥的吗?我查看了有关xinet 分叉并发服务器的讨论,但我的动机略有不同。我想监听另一个端口上的传入连接,因为在分布式计算环境中,另一个应用程序也将与该端口上的守护进程通信。

任何线索都非常感谢。

4

2 回答 2

3

这是一个示例配置,从这个来源获得,它对我有用:

service smtp_forward
{
    disable         = no
    type            = UNLISTED
    socket_type     = stream
    protocol        = tcp
    user            = nobody
    wait            = no
    redirect        = remote_server 25
    port            = 2000
}
于 2014-05-14T01:49:49.733 回答
1

我认为您需要在重定向中同时使用 ip 和端口。就像是

redirect = 127.0.0.1 54321

如果您留在同一主机上。它至少对我有用。

于 2014-03-30T22:31:50.487 回答