← На главную

Добавление маршрутов в OpenVPN клиент-конфиг

OpenVPN поддерживает попоподсеточные route директивы в клиент-конфиге. NetRoute Pro генерирует их из доменов любого сайта — добавьте в .ovpn и split tunneling готов за минуту.

Синтаксис команды

Синтаксис:

route <NETWORK> <NETMASK>

Пример:

route 1.1.1.0 255.255.255.0

Добавьте директивы в клиентский .ovpn файл. С route-nopull через VPN пойдут только эти маршруты. См. мануал OpenVPN 2.6.

Что понадобится

Шаг 1. Сгенерируйте route-директивы в NetRoute Pro

  1. Откройте нужный сайт в Chrome
  2. Запустите расширение NetRoute Pro
  3. Выберите платформу OpenVPN
  4. Нажмите Analyze Website
  5. Скопируйте результат — список вида:
    route 104.21.32.0 255.255.255.0
    route 172.67.182.0 255.255.255.0
    ...
Совет: включите RIPE BGP оптимизацию для стабильных BGP-префиксов — подсети не ломаются при ротации IP у Cloudflare/Fastly. Важно: RIPE BGP возвращает все префиксы анонсируемые ASN — для multi-tenant CDN (Cloudflare AS13335, AWS AS16509, DigitalOcean AS14061) это десятки тысяч IP, покрывающих несвязанные сайты. BGP-оптимизация подходит для single-tenant ASN; для shared CDN оставьте обычную /24 CIDR-агрегацию.

Шаг 2. Отредактируйте .ovpn

  1. Откройте ваш .ovpn файл в любом текстовом редакторе
  2. Удалите строку redirect-gateway def1, если она есть — она отправляет весь трафик через VPN и ломает split tunnel
  3. Удалите строку push "redirect-gateway def1", если присутствует
  4. Вставьте сгенерированные route директивы в конец файла — до блоков <cert>, <key>, <ca>
  5. Сохраните файл

Пример фрагмента .ovpn:

client
dev tun
proto udp
remote vpn.example.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-GCM
verb 3

# --- NetRoute Pro routes ---
route 104.21.32.0 255.255.255.0
route 172.67.182.0 255.255.255.0
# ... остальные маршруты ...

<ca>
...
</ca>

Шаг 3. Переподключите VPN

Отключитесь и подключитесь снова — OpenVPN применит новые маршруты при подъёме туннеля.

Альтернатива: серверные маршруты

Если у вас админский доступ к серверу OpenVPN, добавьте директивы в конфиг сервера:

push "route 104.21.32.0 255.255.255.0"
push "route 172.67.182.0 255.255.255.0"

Клиенты получат маршруты автоматически при подключении — править клиент-конфиги не потребуется.

DNS leak — обязательно прочитать

Эта инструкция направляет трафик по IP. DNS она не направляет. Браузер всё равно спрашивает у системного резолвера (обычно ISP) какой IP у example.com — через туннель идёт только IP-трафик. С route-nopull ситуация хуже: server-pushed DNS тоже отбрасывается, и все DNS-запросы уходят на дефолтный резолвер.

Три варианта в зависимости от модели угроз:

  1. Спрятать DNS от ISP через VPN-резолвер. Используйте selective pull-filter вместо полного route-nopull — отбрасываем только редирект всего трафика, оставляем DNS-push:
    pull-filter ignore "redirect-gateway"
    pull-filter accept "dhcp-option DNS"
    На Windows дополнительно добавьте block-outside-dns, чтобы ОС не делала параллельные запросы к DHCP-резолверу.
  2. Снизить видимость для ISP (публичный DoH/DoT). Настройте на уровне ОС публичный шифрованный резолвер (Cloudflare 1.1.1.1, AdGuard, Quad9). ISP больше не видит запросы доменов; видит публичный резолвер.
  3. Принять leak. Если цель — обход блокировок, не уход от слежки, это нормально — данные идут шифрованно.

Проверить: dnsleaktest.com или browserleaks.com/dns — резолвер в результате должен совпадать с тем что вы настроили, не с ISP.

IPv6 dual-stack bypass

Директива route в OpenVPN — только для IPv4. Если у destination есть AAAA-запись (а у большинства популярных сайтов есть), ОС предпочитает IPv6 поверх IPv4 (RFC 6724) — этот трафик пройдёт мимо туннеля через дефолтный v6-маршрут ISP.

Два варианта решения:

Проверка

После подключения проверьте таблицу маршрутизации:

route print              # Windows
ip route                 # Linux / macOS

Ваши подсети должны идти через tun0 или адаптер OpenVPN TAP.

Частые проблемы

Директивы --route игнорируются

Возможные причины:

Важно: route-nopull не приводит к игнорированию локальных route-директив — он лишь отбрасывает маршруты, пушнутые сервером. Локальные route в клиентском конфиге продолжают работать, что и нужно для split tunneling.

DNS leak на Windows

При split tunnel Windows может посылать DNS-запросы в обход VPN. Добавьте в клиент-конфиг:

block-outside-dns

Маршруты применились, но трафик не идёт через VPN

На VPN-интерфейсе сервера не включён NAT. Правьте серверную часть: на Linux — iptables MASQUERADE для VPN-подсети, на готовых решениях — включить опцию NAT в панели.

Пример конфигурационного файла

Готовый шаблон с комментариями. Замените примеры маршрутов выводом NetRoute Pro для ваших сайтов.


# Example OpenVPN client config snippet for split tunneling.
# Generated by NetRoute Pro: https://alexander2k.github.io/netroute-site/
#
# Append these directives to your existing client .ovpn file. With route-nopull
# the server's pushed routes are ignored — only the explicit `route` lines below
# go through the VPN. Reconnect the client after editing.

route-nopull

# Format: route <NETWORK> <NETMASK>
# Replace these example networks with output from NetRoute Pro.
route 1.1.1.0   255.255.255.0
route 8.8.8.0   255.255.255.0
route 162.159.0.0 255.255.0.0

# Verify after reconnect: openvpn3 sessions-list  (or)  netstat -rn

Подсказка: Нужен конфиг без строк-комментариев? В настройках NetRoute Pro снимите галочку «Включать комментарии в экспортируемые файлы» — расширение выгрузит только команды маршрутизации. Полезно для роутеров, которые не принимают комментарии.

Все примеры конфигов на GitHub →

Официальная документация

Готовы попробовать?

NetRoute Pro — бесплатное расширение Chrome для генерации маршрутов из любого сайта.

Установить расширение