OpenVPN: Маршрут SquidProxy

Я пытаюсь настроить общедоступный прокси-сервер Squid, который направляет свой трафик через VPN-сервер в любую точку мира. Он работает внутри док-контейнера на хосте VPS.

Используя настройки по умолчанию с push-шлюзом, я могу получить доступ к squid proxy на самом VPS, и он маршрутизирует свой трафик через vpn.

Однако никакие внешние IP-адреса не могут получить доступ к прокси-серверу Squid. У меня есть докер, перенаправляющий порт 3128:3128.

Это как-то связано с созданными маршрутами OpenVPN (так как прокси Squid доступен до запуска OpenVPN)

Я обнаружил, что именно этот маршрут, кажется, блокирует мой внешний трафик.

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 - это док-шлюз)

Но мне это нужно для работы с любыми внешними IP-адресами.

Я попытался IP-маршрут добавить 0.0.0.0 через 172.18.0.1 dev eth0.

Но это не работает, так как 128.0.0.0/1 более конкретен, поэтому сначала сопоставим.

В заключение

1) Нужен любой IP для доступа к SquidProxy (порт 3128)

2) Нужно, чтобы все исходящие запросы SquidProxy (80,443) проходили через VPN

Любая помощь будет принята с благодарностью!

1 ответ

ОБНОВИТЬ:

Так что у меня это работает

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 открыт для доступа к контейнеру.

Мне также нужно было использовать --sysctl net.ipv4.conf.all.rp_filter=0 в команде запуска docker.

Другие вопросы по тегам