为了澄清起见,以下是我当前的环境详细信息:
平台:Linux VPS
操作系统:Ubuntu Server 20.04
防火墙:UFW
我已经在 Linux VPS 上部署了一个 OpenVPN 服务器。VPN 服务器在 UDP 和 TCP 协议上都能完美运行。该服务器有一个 IPv4 地址,我IP1
在这里将其称为参考。每当我在客户端计算机上连接到我的 VPN 时,我的客户端 IP 地址都会变成IP1
完全完美的。
但是,现在我已经为我的 VPS 分配了第二个 IPv4,我IP2
在这里将其称为参考。
我的服务器的网络接口现在是这样的:
- eth0 → IP1
- eth0:1 → IP2
我已经在我的 VPS 上设置了三个 OpenVPN 实例,配置如下:
- 10.8.0.0 → IP1 -> 1194 (UDP)
- 10.8.1.0 → IP1 -> 443 (TCP)
- 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
-s
SNAT
最后润色:
更改规则后,尝试iptables -t nat -F POSTROUTING
重新启动 ufw,然后检查iptables-save -t nat
以确保没有其他冲突的SNAT / MASQUERADE
规则。