如何使用iptables将请求转发到运行在不同机器上的jBoss服务器?

我有3台机器具有以下IP地址: –

机器1: – 10.10.10.20机器2: – 10.10.10.21机器3: – 10.10.10.22

jBoss服务器在机器1上启动,机器3是客户机。 如果我在机器3的浏览器中input10.10.10.21(机器2的IP地址),我应该redirect到机器1上启动的jBoss服务器的默认jBoss页面。但是,input10.10.10.20(机器的IP地址1)在机器3上的浏览器不应该工作。 也就是说,机器3上的客户端应该只能通过机器2访问机器1上的jBoss服务器,而不能直接访问。

请注意,这3台机器是带有防火墙的专用networking的一部分。 我想在机器2(RHEL安装)上使用iptables,但我无法正确使用它。

任何人都可以build议我怎样才能实现这个设置(使用iptables或任何其他手段)

我试着在机器2上运行下面的iptables命令:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to-destination 10.10.10.20 

但是我仍然无法从机器3通过机器2访问机器1。

谢谢,机器人

您可以在machine2上运行反向HTTP代理(Apache,Squid,varnish,nginx)。 这实际上是应用程序服务器的一种相当常见的configuration,其中“前端”代理用于为后端应用程序提供caching和故障转移。

然后,您将在machine1上拥有iptables规则,该规则只允许来自机器2的连接。

我设法通过使用iptables将来自Machine 2的请求转发给Machine 3。 忽略脚本中的注释,因为它们可能不正确地解释命令。

  #!/bin/bash #Execute the following command to enable ip forwarding if it is not already enabled. #echo 1 > /proc/sys/net/ipv4/ip_forward #nat to forward all requests to specified ports on Machine 2 to specified ports on Machine 1. iptables -t nat -A PREROUTING -p tcp -d 10.10.10.21 --dport 80 -j DNAT --to 10.10.10.20:80 iptables -t nat -A PREROUTING -p tcp -d 10.10.10.21 --dport 1099 -j DNAT --to 10.10.10.20:1099 iptables -t nat -A PREROUTING -p tcp -d 10.10.10.21 --dport 1098 -j DNAT --to 10.10.10.20:1098 #Allow response from Machine 1 to Machine 2. iptables -t nat -A POSTROUTING -d 10.10.10.20 -j MASQUERADE 

该脚本会将所有对机器2所做的http,rmi和命名服务请求转发给机器1。