我正在尝试设置一个 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.0
DHCP 池在哪里,eth1
可以访问外部互联网的网络设备在哪里。
现在OpenVPN服务器本身已经正确配置,客户端可以建立连接,可以访问白名单中的IP地址。
但是 iptables 规则却不是这样。其他应该经过“客户端 -> 服务器 -> 代理 -> 服务器 -> 客户端”流程的请求并没有按预期进行,症状如下:
- 代理正在运行(已通过其他方式确认),但正在接收很多要求。
- OpenVPN 客户端无法访问白名单以外的 IP 地址。
我想知道代理返回后流量去了哪里?如何让 OpenVPN 服务器按预期工作?... :(