当客户端通过特定端口连接到 VPN 时,如何让 OpenVPN 服务器使用其第二个 IPv4 访问互联网?

当客户端通过特定端口连接到 VPN 时,如何让 OpenVPN 服务器使用其第二个 IPv4 访问互联网?

为了澄清起见,以下是我当前的环境详细信息:

平台:Linux VPS
操作系统:Ubuntu Server 20.04
防火墙:UFW

我已经在 Linux VPS 上部署了一个 OpenVPN 服务器。VPN 服务器在 UDP 和 TCP 协议上都能完美运行。该服务器有一个 IPv4 地址,我IP1在这里将其称为参考。每当我在客户端计算机上连接到我的 VPN 时,我的客户端 IP 地址都会变成IP1完全完美的。

但是,现在我已经为我的 VPS 分配了第二个 IPv4,我IP2在这里将其称为参考。

我的服务器的网络接口现在是这样的:

  1. eth0 → IP1
  2. eth0:1 → IP2

我已经在我的 VPS 上设置了三个 OpenVPN 实例,配置如下:

  1. 10.8.0.0 → IP1 -> 1194 (UDP)
  2. 10.8.1.0 → IP1 -> 443 (TCP)
  3. 10.8.2.0 → IP2 -> 1195 (UDP)

我还将这些规则添加到/etc/ufw/before.rules文件中:

-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j SNAT --到源 IP1

-A POSTROUTING -s 10.8.1.0/8 -o eth0 -j SNAT --到源 IP1

-A POSTROUTING -s 10.8.2.0/8 -o eth0 -j SNAT --到源 IP2

并且一切工作正常,我可以通过所有三个端口连接到 VPN,但问题是,当我连接1195配置为路由到的端口时IP2,我的客户端仍然可以从服务器获取IP1,并且当我检查我的 IP 时它会显示IP1

IP2我想知道当客户端连接到端口上的 VPN 时,我应该怎么做才能配置服务器以使用访问公共互联网1195

提前致谢。

更新-完整输出iptables-save -t nat

# Generated by iptables-save v1.8.4 on Tue Jun 28 14:26:28 2022
*nat
:PREROUTING ACCEPT [1:40]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE
-A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE
-A POSTROUTING -s 10.0.0.0/8 -o eth0:1 -j SNAT --to-source IP2
-A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE
-A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE
-A POSTROUTING -s 10.0.0.0/8 -o eth0 -j SNAT --to-source IP2
-A POSTROUTING -s 10.0.0.0/8 -o eth0:1 -j SNAT --to-source IP2
-A POSTROUTING -s 10.0.0.0/8 -o eth0 -j SNAT --to-source IP1
-A POSTROUTING -s 10.0.0.0/8 -o eth0 -j SNAT --to-source IP1
-A POSTROUTING -s 10.0.0.0/8 -o eth0 -j SNAT --to-source IP2
-A POSTROUTING -s 10.0.0.0/8 -o eth0 -j SNAT --to-source IP1
-A POSTROUTING -s 10.0.0.0/8 -o eth0 -j SNAT --to-source IP1
-A POSTROUTING -s 10.0.0.0/8 -o eth0:1 -j SNAT --to-source IP2
-A POSTROUTING -s 10.0.0.0/8 -o eth0 -j SNAT --to-source IP1
-A POSTROUTING -s 10.0.0.0/8 -o eth0 -j SNAT --to-source IP1
-A POSTROUTING -s 10.0.0.0/8 -o eth0 -j SNAT --to-source IP2
-A POSTROUTING -s 10.0.0.0/8 -o eth0 -j SNAT --to-source IP1
-A POSTROUTING -s 10.0.0.0/8 -o eth0 -j SNAT --to-source IP1
-A POSTROUTING -s 10.8.2.0/24 -o eth0 -j SNAT --to-source IP2
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source IP1
-A POSTROUTING -s 10.8.1.0/24 -o eth0 -j SNAT --to-source IP1
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source IP1
-A POSTROUTING -s 10.8.1.0/24 -o eth0 -j SNAT --to-source IP1
-A POSTROUTING -s 10.8.2.0/24 -o eth0 -j SNAT --to-source IP2
-A POSTROUTING -s 10.8.0.0/16 -o eth0 -j SNAT --to-source IP1
-A POSTROUTING -s 10.8.0.0/16 -o eth0 -j SNAT --to-source IP1
-A POSTROUTING -s 10.8.0.0/16 -o eth0 -j SNAT --to-source IP2
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source IP1
-A POSTROUTING -s 10.8.1.0/24 -o eth0 -j SNAT --to-source IP1
-A POSTROUTING -s 10.8.2.0/24 -o eth0 -j SNAT --to-source IP2
COMMIT
# Completed on Tue Jun 28 14:26:28 2022

答案1

您应该在规则匹配中使用/24而不是。/8-sSNAT

最后润色:

更改规则后,尝试iptables -t nat -F POSTROUTING重新启动 ufw,然后检查iptables-save -t nat以确保没有其他冲突的SNAT / MASQUERADE规则。

相关内容