Назад | Перейти на главную страницу

Маршрутизация трафика на сервер vpn через VPN

Я использую openvpn для маршрутизации всего пользовательского трафика через сервер в зашифрованном виде, когда пользователь подключен к ненадежным сетям.

Это таблица маршрутизации на клиенте

default via 10.8.0.5 dev tun0 proto static metric 50 
default via 20.1.1.1 dev wlp6s0 proto static metric 600 
50.1.1.1 via 20.1.1.1 dev wlp6s0 proto static metric 600 

В целом эта настройка работает нормально. Весь трафик направляется через сервер openvpn.

Теперь пользователь хочет отправить электронное письмо с помощью SMTP-сервера компании, который оказывается на том же компьютере, на котором запущен сервер openvpn (=> тот же IP-адрес).

Из-за третьего правила в таблице маршрутизации этот трафик теперь маршрутизируется через ненадежную сеть, что приводит к двум проблемам:

Как я могу решить эту проблему? Использование другого IP-адреса для сервера vpn и smtp невозможно.

С помощью разделить горизонт DNS, можно было бы решить эту проблему, разрешив домен SMTP-сервера во внутренний IP-адрес VPN. Однако это довольно сложное решение простой проблемы. Скрипт post-up и pre-down на клиенте, который редактирует /etc/hosts для VPN-соединения было бы аналогичным решением, но с другими недостатками, например, неправильными записями в файле hosts, если процесс VPN завершился нестандартным образом.

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

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

http://www.linuxhorizon.ro/iproute2.html

http://www.sparksupport.com/blog/application-based-routing-in-linux_port-based-routing

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