Обхід VPN для всього SSL-трафіку


0

У мене є сервер Raspberry Pi, який виконує різні завдання та програми через різні порти; один з яких - послуга домашньої автоматизації, що працює через проксі-сервер Nginx на тій же машині, щоб дозволити з'єднання https зовні, але лише http-з'єднання в локальній мережі. До цього часу це спрацювало чудово, але останнім часом я вирішив використовувати платну VPN-послугу (використовуючи OpenVPN) для підвищення конфіденційності. Це прекрасно працює, поки я не спробую отримати доступ до свого сервера домашньої автоматизації за допомогою SSL (який необхідний для таких служб, як Amazon Alexa). В результаті я намагався обійти VPN для трафіку SSL на порт 443, але примусив весь інший трафік через тунель, використовуючи наступні маршрути та правила ufw, коли ввімкнено VPN-з'єднання:

ip route add default via $route_vpn_gateway dev tun1 table 10
ip rule add from $ifconfig_local/32 table 10
ip rule add to $route_vpn_gateway/32 table 10
ip route flush cache


ufw insert 1 reject out on wlan0 from any
ufw insert 1 allow out on wlan0 from any port 443
ufw insert 1 allow in on tun1 to any
ufw insert 1 reject out on tun1 from any port 443
ufw insert 1 deny in on tun1 from any port 443
ufw insert 1 allow in on wlan0 to any port 443

Я спробував вставити більш конкретні правила на початку списку правил. Схоже, це не працює, але SSL-з’єднання все ще не вдається пройти. Щось тут мені не вистачає? Конфігурація VPN налаштована так, щоб запобігти автоматичному маршрутизації всього трафіку через тунель.


Якщо ви хочете підключитися до свого сервера домашньої автоматизації під час підключення до VPN, вам також доведеться підключити цей сервер до VPN.
Рамхаунд

Це все один сервер, який я підключаю через VPN.
Jimbroze

Вам потрібно маршрутизація (за допомогою ip routeабо подібної), а не фільтрування (за допомогою iptables / ufw). Вам потрібно додати більш конкретний маршрут, а потім vpn до цільового IP. Ви не можете маршрутизувати один порт.
Steffen Ullrich

На жаль, до кожного інтерфейсу потрібно досягти не лише декількох зовнішніх IP-адрес, тому я не можу вказати маршрутизацію до них.
Jimbroze

Чи все-таки існує маршрутизація всього зовнішнього трафіку на сервер nginx і через шлюз за замовчуванням, але все інше пройти через VPN?
Jimbroze

Відповіді:


1

Для маршрутизації трафіку залежно від того, на який інтерфейс він прибув і який порт, ви можете використовувати iptablesфункцію позначки.

У вашому випадку позначте трафік, що надходить з порту 443 та / або інтерфейс WAN / локальний, а потім використовуйте a, ip ruleщоб змусити його використовувати виділену таблицю маршрутизації. Встановіть маршрут за замовчуванням у цій таблиці, щоб використовувати ваш шлюз non vpn.

Як розмітити та спрямувати позначений трафік, пояснюється тут:

https://www.linuxquestions.org/questions/linux-networking-3/add-route-based-on-port-not-ip-486823/

Якщо ви відключите брандмауер, ви повинні бачити, що трафік зараз правильно направляється.

Я не на 100% впевнений у правилах брандмауера, але перевірте журнал, щоб перевірити, чи працює його як слід /var/log/ufw.log.

Оскільки ufwце передумови для iptablesотримання повного переліку таких правил iptables -S. Щоб перевірити, які фактичні правила впливають на ваш трафік, використовуйте цю traceфункцію iptables.


0

Те, що ви намагаєтеся зробити, називається розділеним тунелем. Вам потрібно буде встановити маршрут або правило на маршрутизаторі, щоб весь трафік, що виходив з джерела до місця призначення, використовував ISP проти VPN.


Як би я пішов робити це?
Jimbroze
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.