OpenVPN 服务器上的基于策略的路由

OpenVPN 服务器上的基于策略的路由

我正在尝试设置一个 OpenVPN 服务器作为移动/桌面设备的反向代理,它可以根据某些策略中继流量:

  • 只有对白名单 IP 地址的请求才会被直接转发(MASQUERADE 到 eth)
  • 其他人将需要经过另一层代理。(因为服务器本身无法直接访问非白名单地址)

我当前的(额外) iptables 配置是:

iptables -t nat -N POLICY

iptables -t nat -A POLICY -d server_ip -j RETURN

iptables -t nat -A POLICY -d 0.0.0.0/8 -j RETURN
iptables -t nat -A POLICY -d 10.0.0.0/8 -j RETURN
iptables -t nat -A POLICY -d 127.0.0.0/8 -j RETURN
iptables -t nat -A POLICY -d 169.254.0.0/16 -j RETURN
iptables -t nat -A POLICY -d 172.16.0.0/12 -j RETURN
iptables -t nat -A POLICY -d 192.168.0.0/16 -j RETURN
iptables -t nat -A POLICY -d 224.0.0.0/4 -j RETURN
iptables -t nat -A POLICY -d 240.0.0.0/4 -j RETURN


iptables -t nat -A POLICY -p tcp -j REDIRECT --to-port 13579

iptables -t nat -A PREROUTING -p tcp -j POLICY

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE

13579代理的端口在哪里, 10.8.0.0DHCP 池在哪里,eth1可以访问外部互联网的网络设备在哪里。

现在OpenVPN服务器本身已经正确配置,客户端可以建立连接,可以访问白名单中的IP地址。

但是 iptables 规则却不是这样。其他应该经过“客户端 -> 服务器 -> 代理 -> 服务器 -> 客户端”流程的请求并没有按预期进行,症状如下:

  • 代理正在运行(已通过其他方式确认),但正在接收很多要求。
  • OpenVPN 客户端无法访问白名单以外的 IP 地址。

我想知道代理返回后流量去了哪里?如何让 OpenVPN 服务器按预期工作?... :(

相关内容