Ограничить определенный процесс подключением OpenVPN?

Ограничить определенный процесс подключением OpenVPN?

Есть ли способ заставить определенный процесс использовать соединение OpenVPN, но разрешить всем остальным процессам в системе использовать сетевое соединение по умолчанию в Ubuntu Linux?

У меня есть пользовательское приложение Python, работающее в AWS, которое я пытаюсь интегрировать с внешним сервисом PostgreSQL. Сервис предоставляет VPN, настроенный на OpenVPN, чтобы я мог получить доступ к их серверу PostgreSQL.

Насколько я понимаю, по умолчанию OpenVPN заставляет весь сетевой трафик на сервере использовать VPN, что обычно именно то, что вам нужно. Однако, поскольку мое приложение работает в AWS, который управляет собственной безопасностью и имеет оптимизированную сетевую маршрутизацию, если я настрою свой сервер на использование этого VPN для всего, то я буду направлять весь свой трафик во внешнее соединение, что все замедлит и, вероятно, приведет к проблемам с доступом к безопасности, поскольку доступ сервера к моим другим ресурсам AWS будет казаться исходящим извне моей учетной записи.

Какой самый простой способ создать сетевой интерфейс VPN, запретив при этом его использование всем, кроме определенного процесса?

решение1

Вы можете использовать route-nopullкоманду в конфигурации клиента, чтобы предотвратить создание любых записей маршрутов. После этого вы можете вручную добавить ту, которая указывает на сервер базы данных. Таким образом, все, что обращается к серверу базы данных, будет использовать VPN, а все остальное будет использовать те маршруты, которые они использовали ранее.

Например, предположим, что сервер базы данных находится по адресу 192.168.111.111 (за VPN-сервером), вам необходимо включить это в конфигурацию клиента:

route-nopull
route 192.168.111.111 255.255.255.255

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