使用xinetd进行端口转发



我想将xinetd连接转发到另一个本地端口(比如12345)。我的解决方案基于Cents/Redhat文档第17章。TCP Wrappers和xinetd,第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
}

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

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

非常感谢任何线索。

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

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

我认为您需要在重定向中同时使用ip和端口。类似的东西

redirect = 127.0.0.1 54321

如果你待在同一个主机上。至少对我有效。

相关内容

  • 没有找到相关文章

最新更新