Как направить трафик браузера через соединение OpenVPN в Linux?

Как направить трафик браузера через соединение OpenVPN в Linux?

Я настроил соединение OpenVPN, но не хочу отправлять через него весь трафик.

Моя текущая таблица маршрутизации выглядит так:

$ ip route
default via 192.168.88.1 dev enp7s0 proto dhcp metric 100
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2
192.168.88.0/24 dev enp7s0 proto kernel scope link src 192.168.88.29 metric 100

Цель состоит в том, чтобы маршрутизировать весь трафикспецифическийпрограмма через tun0, и первая программа-кандидат, конечно же, - браузер.

Есть ли у вас какие-нибудь идеи, как это можно сделать?


Я знаю оiptablesмаршрутизация источника на основе PID, но это потребовало бы пересоздавать правила iptables каждый раз, когда порождается новый процесс. И поскольку каждая вкладка браузера — это новый процесс... Я, честно говоря, не могу себе представить, как все это можно сделать.

Следующая мысль — использовать локальный прокси-сервер Socks, а затем запустить, скажем google-chrome --proxy-server="socks5://127.0.0.1:1080", .

Это отлично работает с SSH-туннелями, поскольку sshможет выступать в качестве SOCKS-прокси. Однако я не нашел прокси-программу, которая могла бы работать так же, но без SSH-туннеля: т. е. выставлять интерфейс SOCKS и направлять весь трафик через tun0. Можете ли вы что-нибудь порекомендовать?

решение1

Вы можете использовать iproute2 и uid пользователя, который запускает браузер или что-то еще. Например:

ip route add table 502 default dev tun0
lp rule add uidrange 1000-1002 table 502

решение2

Запустите программы, которые вы хотите направить через VPN, в новом сетевом пространстве имен, используя туннель в качестве шлюза по умолчанию.

Возможно, вам захочется перенастроить свой ПК таким образом, чтобы файл .desktop для браузера (и любой другой программы, которая должна использовать VPN) запускал скрипт для управления поведением, а также добавить скрипт в конфигурацию OpenVPN для настройки пространства имен.

Связанный контент