使用xinetd进行端口转发

时间:2014-02-12 01:14:07

标签: linux networking centos portforwarding xinetd

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

我目前的目标是在端口12345上的任何连接上启动守护程序(比如testsmpp),并将流重定向到特定端口(比如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
}
testspp侦听端口54321.问题是当从外部进行连接时,xinetd启动守护进程但不将流量转发到54321.一旦服务器启动,我可以直接连接到54321端口,但通过xinetd建立连接(在港口12345)未转发。

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

任何线索都非常感激。

2 个答案:

答案 0 :(得分:3)

这是一个示例配置obtained from this source,它对我有用:

service smtp_forward
{
    disable         = no
    type            = UNLISTED
    socket_type     = stream
    protocol        = tcp
    user            = nobody
    wait            = no
    redirect        = remote_server 25
    port            = 2000
}

答案 1 :(得分:1)

我认为您需要在重定向中同时使用ip和port。像

这样的东西
redirect = 127.0.0.1 54321

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