方案 1:多 IP VPN 客户端(单个 VPN 提供商)
场景:通过单个 VPN 服务商获取多个出口 IP,手动切换或按规则使用。
步骤:
-
安装 VPN 客户端(如 OpenVPN/WireGuard):
# OpenVPN sudo apt install openvpn # WireGuard sudo apt install wireguard
-
配置多个 VPN 配置文件:
- 从 VPN 服务商获取多个配置文件(如
vpn1.conf,vpn2.conf)。 - 每个配置文件对应不同的服务器(IP)。
- 从 VPN 服务商获取多个配置文件(如
-
启动 VPN 连接:
sudo openvpn --config vpn1.conf # 第一个 IP sudo openvpn --config vpn2.conf # 第二个 IP(需多开或切换)
-
策略路由(可选):
- 使用
ip rule和ip route为不同应用指定出口 VPN:# 示例:将标记为 100 的流量走 VPN1 ip rule add fwmark 100 table 100 ip route add default via <vpn1_gateway> dev tun0 table 100
- 使用
方案 2:多 VPN 提供商(不同 IP 来源)
场景:同时连接多个 VPN 服务商(如 NordVPN + ProtonVPN)。
步骤:
-
配置多个 VPN 接口(以 WireGuard 为例):
- 创建
/etc/wireguard/wg0.conf和/etc/wireguard/wg1.conf。 - 分别配置不同服务商的密钥和端点。
- 创建
-
同时启动多个 VPN:
sudo wg-quick up wg0 # 第一个 VPN sudo wg-quick up wg1 # 第二个 VPN
-
路由分流:
-
使用
ip rule按源 IP 或端口分流:# 示例:让 192.168.1.100 走 wg0,192.168.1.101 走 wg1 ip rule add from 192.168.1.100 lookup 100 ip route add default dev wg0 table 100 ip rule add from 192.168.1.101 lookup 101 ip route add default dev wg1 table 101
-
方案 3:负载均衡(多 IP 出口)
场景:将流量均衡分配到多个 VPN 接口。
工具:使用 iptables + iproute2。
-
标记流量:
iptables -A OUTPUT -m statistic --mode random --probability 0.5 -j MARK --set-mark 1 iptables -A OUTPUT -m statistic --mode random --probability 0.5 -j MARK --set-mark 2
-
路由标记:
ip rule add fwmark 1 lookup 100 ip route add default via <vpn1_gateway> table 100 ip rule add fwmark 2 lookup 200 ip route add default via <vpn2_gateway> table 200
方案 4:容器化隔离(Docker)
场景:为每个应用分配独立 VPN/IP。
步骤:
- 使用
docker-compose为每个容器配置独立 VPN:services: app1: network_mode: "service:vpn1" vpn1: image: qmcgaw/gluetun # VPN 容器 environment: VPN_SERVICE_PROVIDER: "nordvpn" app2: network_mode: "service:vpn2" vpn2: image: qmcgaw/gluetun environment: VPN_SERVICE_PROVIDER: "protonvpn"
验证 IP 切换
检查当前出口 IP:
curl ifconfig.me # 或使用多个并行检查
for i in {1..3}; do curl --interface tun$i ifconfig.me; done
注意事项
- 避免 IP 泄漏:确保 DNS 也通过 VPN 解析(
resolvectl或dnsmasq)。 - VPN 协议选择:WireGuard 性能优于 OpenVPN,适合多 IP 场景。
- 日志监控:使用
journalctl -u wg-quick@wg0排查问题。
根据具体需求选择合适的方案,如需更高级功能(如自动故障转移),可结合 keepalived 或自定义脚本。








京公网安备11000000000001号
京ICP备11000001号