![一台服务器上具有 OpenVPN 和 HAProxy 的网络网关 --> 路由问题](https://linux22.com/image/152467/%E4%B8%80%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E5%85%B7%E6%9C%89%20OpenVPN%20%E5%92%8C%20HAProxy%20%E7%9A%84%E7%BD%91%E7%BB%9C%E7%BD%91%E5%85%B3%20--%3E%20%E8%B7%AF%E7%94%B1%E9%97%AE%E9%A2%98.png)
我正在为我的网络设置一个网关,其中包括同一台计算机上的反向代理 (HAProxy) 和 openvpn 服务器。
我想使用 openvpn 连接到 VPN 提供商,以便对来自我的网络的所有流量进行加密。
现在的问题是,一旦我打开与 VPN 提供商的连接,它就会将新路由推送到我的路由表。这些路由与我的 HAProxy 冲突,无法访问我的内部服务器。
不连接 VPN 提供商的路由表:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.1.1 0.0.0.0 UG 202 0 0 eth0
default 192.168.1.1 0.0.0.0 UG 203 0 0 eth1
10.8.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
192.168.1.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 203 0 0 eth1
连接到 VPN 提供商后的路由表:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.8.3.1 128.0.0.0 UG 0 0 0 tun1
default 192.168.1.1 0.0.0.0 UG 202 0 0 eth0
default 192.168.1.1 0.0.0.0 UG 203 0 0 eth1
10.8.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
10.8.3.0 0.0.0.0 255.255.255.0 U 0 0 0 tun1
123.243.152.126 192.168.1.1 255.255.255.255 UGH 0 0 0 eth0
128.0.0.0 10.8.3.1 128.0.0.0 UG 0 0 0 tun1
192.168.100.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
192.168.100.0 0.0.0.0 255.255.255.0 U 203 0 0 eth1
我按照以下指南设置路由和 nat 规则:https://gist.github.com/superjamie/ac55b6d2c080582a3e64
我想通过 tun1 路由到达 eth1 的所有流量,tun1 是与 VPN 提供商的连接。
sudo iptables -t nat -A POSTROUTING -o tun1 -j MASQUERADE
sudo iptables -A FORWARD -i tun1 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth1 -o tun1 -j ACCEPT
eth0 上的所有请求都不应该通过该隧道。相反,它们要么访问我的内部服务器,要么响应来自网络外部的客户端的请求。