OpenVPN: Route SquidProxy



我正在尝试设置一个公共鱿鱼代理,该代理通过世界其他地方的VPN服务器路由其流量。它在VPS主机上的docker容器内运行。

使用推送网关的默认设置,我可以访问 VPS 本身上的 squidproxy,它确实通过 vpn 路由其流量。

但是,没有外部 IP 可以访问鱿鱼代理。 我确实有码头工人转发端口 3128:3128。

这与创建的OpenVPN路由有关(因为在OpenVPN启动之前可以访问Squid代理)

我发现正是这条路线似乎"阻止"了我的外部流量。

128.0.0.0/1 via 10.91.10.5 dev tun0

(10.91.10.5 是 VPN 的网关)

如果我删除它,我可以再次访问鱿鱼,但传出的请求不使用 VPN。

我可以通过像这样显式添加我的外部 IP 来使其工作

ip route add 203.X.X.X via 172.18.0.1 dev eth0

(172.18.0.1 是 docker 网关)

但我需要它与任何外部 IP 一起使用。

我已经尝试过通过 0.0.0.1 dev eth0 添加 ip 路由 172.18.0.0.0。

但这不起作用,因为 128.0.0.0/1 更具体,因此首先匹配。

结语

1) 需要任何 IP 才能访问 SquidProxy(端口 3128)

2)需要所有传出的SquidProxy请求(80,443)通过VPN发送

任何帮助将不胜感激!

更新:

所以我有这个工作

1)使用以下命令启动OpenVPN

openvpn --route-nopull --script-security 2 --up /etc/openvpn/up.sh

这将禁止它设置 VPN 路由。因此,所有进出流量都使用默认路由,而不是通过VPN

2)在 up.sh 中,我运行以下命令

#!/bin/sh
/sbin/ip route add 0.0.0.0/0 dev $1 table 100
/sbin/ip rule add from all fwmark 1 table 100
/sbin/iptables -A OUTPUT -t mangle -p tcp -m multiport --dports 80,443 -j MARK --set-mark 1
/sbin/iptables -t nat -A POSTROUTING -o $1 -j MASQUERADE

然后,我将Squid设置为仅允许端口80和443。Docker 已打开端口 3128 以访问容器。

我还需要在 docker run 命令中使用 --sysctl net.ipv4.conf.all.rp_filter=0。

最新更新