Ip OpenVPN:路由代理

Ip OpenVPN:路由代理,ip,iptables,squid,openvpn,iproute,Ip,Iptables,Squid,Openvpn,Iproute,我正在尝试设置一个公共squid代理,该代理通过VPN服务器将其流量路由到世界其他地方。它在VPS主机上的docker容器中运行 使用push gateway的默认设置,我可以访问VPS上的squidproxy,它确实通过vpn路由流量 但是,没有外部IP可以访问squid代理。 我确实让docker把端口3128:3128转过来了 这与创建的OpenVPN路由有关(因为在OpenVPN启动之前,Squid代理是可访问的) 我发现这条路线似乎“阻塞”了我的对外交通 128.0.0.0/1 via

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

使用push gateway的默认设置,我可以访问VPS上的squidproxy,它确实通过vpn路由流量

但是,没有外部IP可以访问squid代理。 我确实让docker把端口3128:3128转过来了

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

我发现这条路线似乎“阻塞”了我的对外交通

128.0.0.0/1 via 10.91.10.5 dev tun0
(10.91.10.5是VPN的网关)

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

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

ip route add 203.X.X.X via 172.18.0.1 dev eth0
(172.18.0.1是docker网关)

但我需要它与任何外部IP一起工作

我已尝试通过172.18.0.1 dev eth0添加ip路由0.0.0.0

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

总之

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

2) 需要所有传出的代理请求(80443)通过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