Debian:转发端口到另一台服务器的原始IP地址的方式?

想象一下,我有多个(debian)服务器在不通过局域网连接的不同位置。

我需要find一个方法来转发特定的端口到其他服务器之一,但处理请求的服务器应该看到连接到转发服务器的用户的原始IP。 我知道有HTTP的X-Forwarded-For,但我一般对TCP感兴趣。

也可以设置一个VPN(openvpn,PPTP,…),我不知道这是否有帮助,但VPN的问题是,那么所有的跨服务器连接将通过VPN主机,但它会更好,如果每台服务器都可以直接将stream量转发到另一台

我的意思是:server1:80 => server2:80
server2:8080 => server3:8080
server3:1234 => server1:1234

我尝试SSH转发,但原来的IP丢失。

很难满足您的确切需求,但您可以尝试的一种可能性是:

  1. build立从服务器到服务器的VPN隧道。 这可以解决您对VPN的投诉。
  2. 使用TProxy修补程序运行HAProxy。 这可以使通用的TCP代理,并保持原来的IP不变。 有了这个警告,所有的答复都必须通过负载均衡器路由。 这个stream量可能比通过VPN隧道。

你的要求是非常具体的,如果退后一步,你可以从我们这里得到更好的build议,并解释你正在尝试devise一些更多的细节。

一旦你开始转发从服务器到服务器的数据包,你会加倍networking上的负载。 为什么不设置您的路由器/防火墙redirect基于目的端口的数据包,以便它首先到达正确的服务器? 然后路由器/防火墙会来回处理交换目标地址。

之所以需要“是”,是因为如果客户端认为它连接到server1,返回的数据包必须来自server1的IP地址,否则客户端将忽略它们,所以当server3响应时,“from”地址需要改为server1,防火墙应该使用像Linux的ip_conntrack这样的NAT来自动处理。

如果你坚持在服务器之间来回转发,我现在有一些想法,但没办法testing它们。