将所有网络数据包从服务器 A 转发到服务器 B(WAN)Ubuntu

将所有网络数据包从服务器 A 转发到服务器 B(WAN)Ubuntu

我目前在 VPS 上运行游戏服务器,不久将更换 VPS 提供商。为了让玩家更轻松地完成迁移,我希望玩家能够通过将所有数据包从旧服务器转发到新服务器,暂时使用原始 IP。

我知道这会增加额外的延迟,但我将显示一条显示新 IP 的消息,并警告他们如果他们使用原始 IP 会增加延迟。

两台服务器不是在同一个内部网络上。

我希望所有这些都是有效的;

Client --> Server A --> Server B
Server B --> Client
Client --> Server B

例如,客户端可以直接连接到 B,但如果他们连接到 A,它将重定向到 B。在所有情况下,服务器 B 都会将其数据直接发送到客户端。

服务器 A 除了转发数据包外不做任何事(例如游戏服务器不是正在跑去那里)

我知道这可能不太可能,但如果有人能帮助我那就太好了。

哦,因为它是一个游戏服务器,所以大多数流量都是 UDP,并且两个服务器都运行 Ubuntu 12.0.4

谢谢

答案1

客户端——>服务器A——>服务器B

为此,您必须使用双 NAT,如下所示Server A

  1. DNAT传入数据包到Server AServer B
  2. 这样做是SNAT为了确保返回流量能够通过Server A

像这样:

iptables -t nat -A PREROUTING -d $Server_A_ip_address -j DNAT --to-destination $Server_B_ip_address
iptables -t nat -A POSTROUTING -d $Server_B_ip_address -j SNAT --to-source $Server_A_ip_address

其他情况更容易处理:

服务器B-->客户端

Server Biptables -A OUTPUT -s $Server_B_ip_address -j ACCEPT

客户端——>服务器B

Server Biptables -A INPUT -d $Server_B_ip_address -j ACCEPT


当然,对于所有这些,建议指定协议和端口。我的样本太宽容了,因为我不知道你的端口/协议。

相关内容