我想将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
如果你待在同一个主机上。至少对我有效。