配置 ubuntu vps 将数据包转发到两个不同的服务器

配置 ubuntu vps 将数据包转发到两个不同的服务器

我有三台独立的 ubuntu VPS 服务器(A、B、C),之前我只有一个与服务器 A 关联的 IP 地址,用于iptables将任何传入数据包转发到11.22.33.44端口 443 上的 IP 地址55.66.77.88(服务器 B),并使用服务器 A 作为我的 TCP 连接的网关,以绕过客户端区域的阻塞

PREROUTIN我通过使用以下命令添加规则来做到这一点:

$ iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 55.66.77.88:443

以及添加规则POSTROUTING

$ iptables -t nat -A POSTROUTING -j MASQUERADE

我想99.10.11.12从服务器 A 上的 VPS 提供商购买另一个 IP 地址 ( ),该地址将连接到eth1该地址并将数据包转发到服务器 C ( 13.14.15.16) 在此输入图像描述

但是一旦第二个 IP 被购买并处于活动状态,一切都会停止工作,甚至传入的数据包无法11.22.33.44到达服务器 B。

我不确定如何配置规则来获得我想要的东西,并且尝试了解iptables只会让我更加困惑。

答案1

一旦服务器有两个或更多网络接口,非对称路由就会成为问题。例如,数据包可以通过eth0server A转发到server B。当返回数据包从server Bto返回时server A,它可能会尝试逃逸eth1到互联网,因为那是默认网关指向的位置(反之亦然)

在此示例中将server A配置四个接口:

eth0 - 1.0.0.1 (WAN-1 facing)
eth1 - 1.1.1.1 (WAN-2 facing)
eth2 - 10.2.2.1/24 (LAN-B facing)
eth3 - 10.3.3.1/24 (LAN-C facing)

Server B将有一个 IP 地址10.2.2.2/24,默认网关指向服务器 A 的 eth2 接口 (10.2.2.1)

Server C将有一个 IP,10.3.3.2/24其默认网关指向服务器 A 的 eth3 接口 (10.3.3.1)

由于server A有四个 IP 地址,并且一次只能有一个默认网关,否则您可能会遇到非对称路由问题。

在 上server A,可以执行以下命令来控制流量

通过 eth2(面向 LAN-B)的流量必须转换为 eth0 的公共 IP (1.0.0.1)

$ sudo iptables -t nat -A POSTROUTING -o eth2 -s 10.2.2.0/24 -j SNAT --to-source 1.0.0.1

通过 eth3(面向 LAN-C)的流量在通往互联网的途中必须转换为 eth1 的公共 IP (1.1.1.1)

$ sudo iptables -t nat -A POSTROUTING -o eth3 -s 10.3.3.0/24 -j SNAT --to-source 1.1.1.1

相关内容