Linux上的IP转发是否充当反向代理?

我环顾四周,看到了许多IP转发解决scheme,将来自一台服务器上的IP的请求转发到另一台服务器上的另一台IP上。 (基本上,将服务器X上的请求转发到123.45.67.89到服务器Y上的98.76.54.321)。这些解决scheme通常包括在Linux内核中启用IP转发,并添加iptables规则以使所有工作都成功。

但是,我不知道服务器Y(及其IP 98.76.54.321)是否会在转发时被暴露。 我基本上是针对一个反向代理,但对于TCP / UDP上的任何端口或协议。

基本上,Linux IP转发是否自动充当反向代理,还是必须采取其他措施来确保服务器Y(其IP)的身份不会通过服务器X显示? 还是我正在考虑错误的解决scheme?

Linux IP转发基本上是路由。 它本身并不是代理服务器,或者根本不会改变第3层以上的stream量。

也就是说,如果你想要屏蔽stream量的位置,你可以考虑使用iptables来设置NAT来伪装(或源NAT)stream量,这样源IP就是linux服务器的IP。 这与转发一起工作。

要做到这一点,你必须DNAT的入站stream量(改变其目的地地址):

iptables -t nat -A PREROUTING -d ${server_x} -j DNAT --to-destination ${server_y} 

然后,您必须更改源地址,以便隐藏的服务器通过转发器发回stream量:

 iptables -t nat -A POSTROUTING -d ${server_y} -j SNAT --to ${server_x} 

你可以考虑在协议和端口上预测这些,如果这是你想要的。

你没有完全解释你正在试图解决的问题,只是你认为你可以解决它,然后要求其他select…所以这个答案可能有些模糊,但是我仍然会给它。

首先,为了所有圣洁的爱, 避免NAT 。 请。 每次创build新的NAT时,独angular兽都会哭泣。

解决scheme1

如果您的服务器具有公共IP,则只需使用路由(IP转发)和适当的防火墙规则(iptables)来控制允许通过的内容。

例如:

 Internet <==> Perimeter (123.45.67.89) <==> Server (98.76.54.321) 

在外围主机上启用IP转发(路由),然后放入防火墙规则,只允许您希望能够到达服务器的stream量, DROPREJECT所有其他stream量。

解决scheme2

如果你真的想“隐藏”服务器,所以“互联网”认为它实际上是与“周边”交谈,即使它实际上是处理“服务器”,然后在“周边”安装适当的反向代理软件,并做它的东西。 这将需要更多的资源在外围主机,但隐藏“服务器”,并避免NAT(我提到避免NAT?)

解决scheme3

如果你真的必须这样做,因为1和2不pipe出于什么原因都是不可行的,那么就用NAT的build议吧。