两个客户端通过单个 VPN 连接位于 NAT 后面,延伸到两个独立的公共 IP

两个客户端通过单个 VPN 连接位于 NAT 后面,延伸到两个独立的公共 IP

我正在寻找一种方法,在 NAT 后面为通过同一 VPN 隧道连接的不同客户端在不同的 IPv4 地址上转发传出的流量。

现在,我正在将端口 44158 从 VPS 服务器 X 上的多个公共 IPv4 地址转发到通过单个 VPN 连接连接的多个客户端(从 NAT 后面的路由器)。接收公共 IPv4 地址上的输入端口 44158 无法更改,路由器后面的客户端在正确的端口 44158 上接收数据,因为路由器设置为将数据转发到目的地的每个客户端的正确端口。

这样做是这样的:

iptables -t nat -A PREROUTING -d 103.143.72.84 -p tcp --dport 44158 -j DNAT --to-destination 192.168.52.2:44158
iptables -t nat -A PREROUTING -d 103.143.72.25 -p tcp --dport 44158 -j DNAT --to-destination 192.168.52.2:44159
iptables -t nat -A POSTROUTING -s 192.168.52.0/24 -j MASQUERADE

192.168.0.2目的地路由器在哪里,它将数据包转发到其内部 NAT 到客户端,从44158192.168.0.12:44158以及从44159192.168.0.13:44158

我想要实现的是让所有来自 192.168.0.12 的出站流量都通过 103.143.72.84 退出,所有来自 192.168.0.13 的出站流量都通过 103.143.72.25 退出。有没有办法iptables在 VPS 服务器 X 上做到这一点?

我有这个无法更改的硬件设置,客户端 A (192.168.0.12) 和 B (192.168.0.13) 连接到 LAN 上的路由器 N,并且位于 NAT 网络 192.168.0.0/24 上。路由器 N 通过 VPN 连接到 VPS 服务器 X 并获取 IP 192.168.52.2。服务器 X 有多个 IPv4 公有地址(103.143.72.84 和 103.143.72.25)。我想在服务器 X 上为每个客户端 IP 分配一个单独的出站公有 IP。

  • 使用的 IP 用于示例目的;
  • 为了简单起见,我保留了两个客户端的示例,但实际上还涉及更多内容。

答案1

传出流量使用情况iptables -t nat -A POSTROUTING ...

并指定源地址使用-j SNAT ip

iptables -t nat -A POSTROUTING -s 192.168.0.12 -j SNAT 103.143.72.84
iptables -t nat -A POSTROUTING -s 192.168.0.13 -j SNAT 103.143.72.25

MASQUERADE请注意,如果您有该范围,这些必须在全局之前。

如果所有 IP 都是线性范围,那么还有其他方法可以对该范围进行 NAT。

相关内容