我正在研究一种设置,该设置需要将来自服务器端口之一的请求重定向到 NATed 环境中的其他服务器端口(例如:来自 192.168.1.100:843 的所有请求都应重定向到 192.168.1.200:8443 - 两台服务器位于专用防火墙后面并在所有端口之间相互通信。)
服务正在服务器 192.168.1.200 的 8443 端口上运行。我通过 xinetd 在服务器 192.168.1.100 上配置了端口转发,如下所示。
service serv1
{
bind = 192.168.1.100
protocol = tcp
flags = REUSE
socket_type = stream
port = 843
wait = no
user = root
redirect = 192.168.1.200 8443
}
现在,当我在 LAN 内远程登录到 192.168.1.100 843 时,我可以在 192.168.1.200:8443 上连接服务
-> telnet 192.168.1.100 843
Trying 192.168.1.100...
Connected to 192.168.1.100.
Escape character is '^]'.
但是当我试图通过 192.168.1.100 的公共 IP 连接时,我得到“连接关闭”
-> telnet 1.2.3.4 843
Trying 1.2.3.4...
Connected to 1.2.3.4.
Escape character is '^]'.
Connection closed by foreign host.
在执行 tcpdump 时,我发现在后面的情况下请求不会到达服务器 192.168.1.200 本身。
我在我们的一个 DC 中进行了类似的设置,并且工作正常。任何想法,如果这里有什么问题。
谢谢,梅加南德
好吧,经过进一步调查,我发现它由于 TCPWrappers 而被阻止 添加适当的规则后它的工作正常。
以下添加到 /etc/hosts.allow
谢谢
bind
如果您希望它监听分配给主机的所有 IP,则需要删除该行。但是,这不能完全解释您的问题。如果这是您犯的唯一错误,则与其他 IP 的连接将被拒绝连接,而不是在建立连接后断开连接。
其他东西可能正在侦听另一个 IP 地址上的相同端口号。这甚至可能是一项不同的
xinetd
服务。如果您有其他xinetd
服务,看起来与此类似,它可以解释问题:这里的区别在于另一个正在侦听不同的 IP(但端口号相同),并连接到另一个端口号,该端口号已关闭。如果这是您所做的,那么与另一个 IP 地址的连接将建立一个已建立的连接,
xinetd
一旦意识到目标端口redirect
已关闭,该连接就必须关闭。最后一部分只是猜测。如果你运行
netstat -ntlpW
,你应该能够看到,在那个其他 IP 上真正监听的是什么。