Можно ли настроить (Squid) прокси так, чтобы браузер мог обходить VPN?

Я хочу сделать следующее (если это возможно):

Как обычно, иметь 1 браузер (скажем, Firefox) - весь трафик использует мою VPN. У вас есть другой браузер (например, Chrome), в котором весь трафик проходит в обход VPN.

Я уже настроил ПК с VPN с использованием OpenVPN, и я понимаю, как добавлять статические маршруты, чтобы доступ к определенным IP-адресам обходил VPN.

Я подумал, что то, что я хочу сделать, может быть возможным, если настроить прокси-сервер (Squid), который направляет весь трафик за пределы VPN, а затем настроить браузер Chrome для использования этого прокси-сервера. Если нет лучшего / более простого способа?

Но я не знаю, как это сделать и настроить Squid / routes, несмотря на то, что я много читал и экспериментировал (я не специалист по сетям), и я не смог найти любой ресурс, чтобы рассказать мне, как (или если это возможно).

Любая помощь или ссылки на информацию приветствуются.

0
задан 1 August 2020 в 15:24

2 ответа

Спасибо за все идеи и комментарии. У меня (пока) нет firejail для работы с активным VPN (@Анонимное предложение). Но я выполнил предложение, на которое ссылается @ofirule, в частности этот ответ, чтобы использовать контрольные группы.

В этом ответе есть ссылка на полный сценарий оболочки, чтобы делать все автоматически, но я хотел сделать что-то вручную, по крайней мере, для начала, чтобы я мог следовать и убедиться, что я точно знаю, что я меняю. Итак, следуя Руководству HowTo, я опубликую ниже именно то, что я сделал для всех остальных.

Обратите внимание, что мой сетевой интерфейс называется enp0s31f6, а IP-адрес моего шлюза — 192.168.0.1 Я думаю, что это единственные две конкретные вещи, которые, возможно, потребуется изменить для других после этого:

# Install required tools
sudo apt-get install cgroup-lite cgroup-tools

sudo su

# Define a control group named novpn with a classid of 11:11
cd /sys/fs/cgroup/net_cls
mkdir novpn
cd novpn
echo 0x00110011 > net_cls.classid

# Add mark 11 on packets of classid 0x00110011
iptables -t mangle -A OUTPUT -m cgroup --cgroup 0x00110011 -j MARK --set-mark 11

# Force the packets to exit through my interface (enp0s31f6) with NAT
iptables -t nat -A POSTROUTING -m cgroup --cgroup 0x00110011 -o enp0s31f6 -j MASQUERADE

# Define a new "novpn" routing table
echo 11 novpn >> /etc/iproute2/rt_tables

# Packets with mark 11 will use novpn
ip rule add fwmark 11 table novpn

# Add a route for default gateway for novpn
ip route add default via 192.168.0.1 table novpn

# Unset reverse path filtering for all interfaces
# My PREVIOUS VALUES: lo was 0, others (all, default, enp0s31f6) were 2 in case I need to revert back.
for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 0 > $i; done

exit

# Create control group    
sudo cgcreate -t $USER:$USER -a $USER:$USER -g net_cls:novpn

# Run app on specific novpn interface (close all browser windows first)
killall firefox
cgexec -g net_cls:novpn firefox

Я (пока) не полностью понимаю все вышеперечисленное, но это работает! :-) Запустив Firefox с помощью команды cgexec, я могу проверить свой IP-адрес в Firefox с активным VPN и увидеть, что он сообщает о моем фактическом общедоступном IP-адресе, а не об IP-адресе VPN. Я также доказал, что этот метод работает, запустив службу потоковой передачи радио, у которой были проблемы с работой с VPN — теперь она работает абсолютно нормально в обход VPN.

0
ответ дан 12 August 2020 в 14:43

Я не использовал squid, но для моего Понимая, что это всего лишь обычный прокси-сервер, поэтому, установив его на свой компьютер, он по-прежнему следует правилам маршрутизации вашей ОС.

Я бы попробовал следующую настройку:

  1. Настройте OpenVPN так, чтобы не меняли шлюз по умолчанию
  2. Установите squid или другую прокси-службу на той же машине, на которой работает ваш сервер OpenVPN

После того, как при такой настройке ваши браузеры не будут использовать VPN по умолчанию, и вы можете настроить один из них для работы через прокси-сервер, используя адрес подсети OpenVPN сервера.

Примечание 1: Вы должны использовать прокси-сервер через адрес подсети OpenVPN, а не его общедоступный IP-адрес.

Примечание 2: Не разрешайте трафик на порт прокси-сервера из-за пределов подсети OpenVPN, это можно сделать с помощью iptables или запретив открытие порта в соответствии с правилами вашего облачного провайдера

ОБНОВЛЕНИЕ:

Когда используя внешнюю службу VPN (например, nordVPN), у вас нет доступа к машине, на которой работает сервер OpenVPN, и это делает вышеприведенное решение недействительным, поскольку вы не можете ничего установить на машину, на которой работает сервер OpenVPN.

Возможно установить прокси-сервис на другом устройстве в вашей локальной подсети, и некоторые маршрутизаторы (например, микротик) предоставляют эту функцию. Но это заставит решение работать только в определенном месте с этой настройкой.

1
ответ дан 8 August 2020 в 06:29

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

Похожие вопросы: