У мене є сервер 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 налаштована так, щоб запобігти автоматичному маршрутизації всього трафіку через тунель.
ip route
або подібної), а не фільтрування (за допомогою iptables / ufw). Вам потрібно додати більш конкретний маршрут, а потім vpn до цільового IP. Ви не можете маршрутизувати один порт.