我希望有人可以帮助我这个configuration。 我已经有一个工作的设置,一个Linux机器充当一个路由器,只是为公有IP做端口转发。 这些都是公有IP的顺便说一句。
HOST_x – 可以是任何具有公共IP的主机。 (例如:xxxx)
MY_LINUX – 仅使用IPtables为公有IP进行端口转发。 (固定IP,例如:2.2.2.2)
SERVER – 具有公共IP地址的Web服务器。 (固定IP,例如3.3.3.3)
PORT – (TCP PORT = 80)
这是MY_LINUX上的configuration:
iptables -t nat -A PREROUTING -p tcp -d 2.2.2.2 –dport 80 -j DNAT – 到目的地3.3.3.3:80 iptables -t nat -A POSTROUTING -p tcp -d 3.3.3.3 –dport 80 -j MASQUERADE
上面的configuration工作。 当浏览器中的HOST_xtypes在2.2.2.2中时,它从3.3.3.3获得网页。
我在这里唯一的问题是目标SERVER(3.3.3.3)看到来自MY_LINUX(2.2.2.2)的请求,我想看到的是请求HOST_x(xxxx)的原始IP。
我将不胜感激任何build议,谢谢。
我会说在三层的时候这是不可能的。 HOST_x希望剩余的数据包来自发起连接MY_LINUX的主机。 如果SERVER突然进入TCP握手和应答的中间,HOST_x会忽略这些包。
由于HOST_x和SERVER具有直接的连接性,我认为将这个路由scheme移动到应用层并实现HTTPredirect会更好。 然后HOST_x直接打开一个连接到终点。
如果您可以访问Web服务器(或其网关),则可以执行此操作。 我想到的唯一解决scheme是路由器和networking服务器之间的隧道。 然后web服务器(网关)可以发送所有的回复数据包到路由器,而不必调整目的地址。 如果这是你的select,那么我会看看细节。