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

Как я могу настроить openvpn на прокси-трафик только для процессов, которые привязаны к интерфейсу tun?

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

Я пытаюсь сделать это, если openvpn не выполняет конфигурацию маршрута (--route-noexec) и наличие приложений, явно подключающихся к интерфейсу tun (например: curl --interface tun0 'http://www.ipchicken.com'), но connect() кажется, что время истекло.

Есть ли еще один шаг, который мне нужно сделать, чтобы сделать интерфейс tun счастливым?

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

# ip route add $VPN_NETWORK dev tun0
# ip route add default via $VPN_GATEWAY_IP table 1
# ip rule add iif tun0 table 1

Первый маршрут попадает в таблицу по умолчанию (таблица 254), второй входит в таблицу 2, третья строка связывает пакеты из tun0 интерфейс ко второй таблице маршрутизации, вы можете дать этой таблице имя в /etc/iproute2/rt_tables:

# echo '1 vpn' >> /etc/iproute2/rt_tables

Если ваш VPN-шлюз 10.8.0.1/16, вам нужно будет ввести:

# ip route add 10.8.0.0/16 dev tun0
# ip route add default via 10.8.0.1 table vpn
# ip rule add iif tun0 table vpn

Это называется Policy Routing и ты должен иметь CONFIG_IP_MULTIPLE_TABLE включен в конфигурации вашего ядра, чтобы это работало.

route-nopull

http://openvpn.net/index.php/open-source/documentation/manuals/69-openvpn-21.html

При использовании с --client или --pull принимайте параметры, переданные сервером, ИСКЛЮЧАЯ для маршрутов. При использовании на клиенте этот параметр эффективно запрещает серверу добавлять маршруты в таблицу маршрутизации клиента, однако обратите внимание, что этот параметр по-прежнему позволяет серверу устанавливать свойства TCP / IP интерфейса TUN / TAP клиента.

Так что добавьте route-nopull в свой файл конфигурации OpenVPN. Я написал сообщение о том, как использовать OpenVPN VPN с cURL / PHP.