Как использовать VPN под Linux для отдельных приложений или сайтов?



@Tweedlex77

В качестве ОС использую Debian 12.
Куплены услуги VPN провайдера xeovo.com с протоколами Wireguard и OpenVPN на выбор.

Задача — на уровне приложения (конкретный браузер) или на уровне доменов настроить пропускание трафика через VPN.
Например — все сайты в браузере Firefox будут открываться через VPN. Или определенные сайты во всех браузерах будут открываться через VPN.

Как можно технически реализовать это на десктопе с Linux?

Знаю, что подобный функционал есть в приложении AmneziaVPN. Но заставить работать его с данным VPN провайдером у меня не получилось.


Решения вопроса 1



@Tweedlex77 Автор вопроса

Опишу вкратце к какому решению я пришел.
По началу основной упор был сделан на протокол Wireguard. Так как он более быстрый + я узнал о программе Wireproxy.

С помощью программы Wireproxy я поднял локальный прокси, к которому подсоединялся с помощью расширения в браузере FoxyProxy.

Получилась следующая схема:
Браузер с FoxyProxy -> Wireproxy -> VPN сервер с WireGuard.

С точки зрения функциональности и безопасности меня такое решение устраивало. Но я заметил очень жесткую просадку скорости в 10 раз. Причем, тестировал в режиме работы Wireproxy как и SOCKS, так и HTTP — разницы не заметил.

Дальше, нашел статью о том, как можно настроить выборочный обход блокировок по доменным именам (для этого требуется роутер с OpenWRT). Решение очень интересное. Но оно в первую очередь для удобного обхода блокировок.
С точки зрения безопасности, ты не всегда можешь наглядно видеть, открылся ли у тебя сайт через VPN или нет.

Ну и листая интернеты, нашел замечание о том, что Wireguard работает на транспортном уровне с IP адресами, поэтому решения с пропусканием трафика через VPN для определенных доменов всегда будет громоздкими.

И это натолкнуло меня на идею, которая лежала на поверхности. Просто развернуть vm в VirtualBox, которая всегда будет подключена к VPN при старте ОС.

Для этого я использовал Linux Mint 21.2 и официальный гайд VPN провайдера.

В итоге, пользуюсь VPN с помощью виртуальной машины и её браузера. Просадок по скоростям нет, данный способ рекомендую.

P.S. Еще я пробовал на виртуальной машине с Linux в докер-контейнере запускать бразуер. Решение тоже довольно интересное.
С браузера хостовой ОС ты можешь подключиться к сервису докер-контейнера и у тебя в вкладке браузера будет Firefox (браузер в браузере). И так как сама vm подключена к VPN, то, соответственно, этот браузер будет открывать все вкладки через VPN.


Ответы на вопрос 3



@SignFinder

1. Отключить прохождение всего трафика через VPN
2. Установить на linux десктопе любой http\socks проксисервер, который будет в качестве выходного интерфейса иметь VPN и отправлять трафик в VPN.
3. Настроить работу через прокси в приложении\браузере, поставить расширение типа foxyproxy, которое будет перенаправлять по именам сайтов трафик через определенный прокси.

А еще есть socksify\proxyfy приложения, которые умеют перенаправлять весь трафик с приложений в определенный прокси.



@dronmaxman

Вариант 1 — осилиш?
https://www.redhat.com/sysadmin/use-net-namespace-vpn

Вариант 2 — мне больше нравиться, за 5 минут настроил на macOS
https://github.com/pufferffish/wireproxy

brew install go git
git clone https://github.com/octeep/wireproxy
cd wireproxy
make

vpn-proxy.conf
# Link to the Downloaded config
WGConfig = ./wg-client.conf

# Used for firefox containers
[Socks5]
BindAddress = 127.0.0.1:25344 #

RUN
./wireproxy -c vpn-proxy.conf

И идем настраивать прокси socks в firefox на порт 25344

Я использую WARP от cloudFlare, это тоже WG, он условно бесплатный и их клиент из коробки умеет быть прокси.



@Viji

Есть еще один вариант, сделать демон на линуксе или сервис на виндовсе, который будет постоянно обновлять таблицу маршрутизации и сайты с определенными IP адресами отправлять на интерфейс где крутится VPN, а остальные сайты будут идти по обычному маршруту.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *