Добавление маршрутов в 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.
Что понадобится
- OpenVPN 2.4+
- Доступ к вашему
.ovpnконфигу - Клиент OpenVPN: CLI, OpenVPN GUI, OpenVPN Connect или Tunnelblick (macOS)
- Расширение NetRoute Pro в Chrome
Шаг 1. Сгенерируйте route-директивы в NetRoute Pro
- Откройте нужный сайт в Chrome
- Запустите расширение NetRoute Pro
- Выберите платформу OpenVPN
- Нажмите Analyze Website
- Скопируйте результат — список вида:
route 104.21.32.0 255.255.255.0 route 172.67.182.0 255.255.255.0 ...
Шаг 2. Отредактируйте .ovpn
- Откройте ваш
.ovpnфайл в любом текстовом редакторе - Удалите строку
redirect-gateway def1, если она есть — она отправляет весь трафик через VPN и ломает split tunnel - Удалите строку
push "redirect-gateway def1", если присутствует - Вставьте сгенерированные
routeдирективы в конец файла — до блоков<cert>,<key>,<ca> - Сохраните файл
Пример фрагмента .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-запросы уходят на дефолтный резолвер.
Три варианта в зависимости от модели угроз:
- Спрятать DNS от ISP через VPN-резолвер. Используйте selective
pull-filterвместо полногоroute-nopull— отбрасываем только редирект всего трафика, оставляем DNS-push:
На Windows дополнительно добавьтеpull-filter ignore "redirect-gateway" pull-filter accept "dhcp-option DNS"block-outside-dns, чтобы ОС не делала параллельные запросы к DHCP-резолверу. - Снизить видимость для ISP (публичный DoH/DoT). Настройте на уровне ОС публичный шифрованный резолвер (Cloudflare 1.1.1.1, AdGuard, Quad9). ISP больше не видит запросы доменов; видит публичный резолвер.
- Принять leak. Если цель — обход блокировок, не уход от слежки, это нормально — данные идут шифрованно.
Проверить: dnsleaktest.com или browserleaks.com/dns — резолвер в результате должен совпадать с тем что вы настроили, не с ISP.
IPv6 dual-stack bypass
Директива route в OpenVPN — только для IPv4. Если у destination есть AAAA-запись (а у большинства популярных сайтов есть), ОС предпочитает IPv6 поверх IPv4 (RFC 6724) — этот трафик пройдёт мимо туннеля через дефолтный v6-маршрут ISP.
Два варианта решения:
- Зеркалировать маршруты для v6 (если VPN поддерживает IPv6) через
route-ipv6:
Для всего v6 через туннель:route-ipv6 2606:4700::/32 route-ipv6 2001:4860::/32redirect-gateway ipv6(или server-side push). - Заблокировать v6 полностью если у VPN нет IPv6-endpoint — либо отключить IPv6 на ОС, либо firewall-правилом резать v6-исходящие. Иначе dual-stack сайты тихо leak'ают.
Проверка
После подключения проверьте таблицу маршрутизации:
route print # Windows
ip route # Linux / macOS
Ваши подсети должны идти через tun0 или адаптер OpenVPN TAP.
Частые проблемы
Директивы --route игнорируются
Возможные причины:
- Сервер пушит
redirect-gateway def1— это перекрывает ваши локальныеroute(весь трафик идёт через VPN). Добавьте в клиентский конфигpull-filter ignore "redirect-gateway", чтобы отфильтровать именно эту директиву без потери других server push'ей. route-директивы находятся внутри inline-блока<cert>,<key>и т.п. — вынесите их наружу.- Неверный синтаксис — директива принимает
NETWORK NETMASKточечной нотацией, не CIDR. Используйтеroute 1.1.1.0 255.255.255.0, неroute 1.1.1.0/24.
Важно: 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 для ваших сайтов.
openvpn-routes.ovpn— Фрагмент клиентского конфига OpenVPN с директивамиroute
# 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 →
Официальная документация
Похожие инструкции
- Keenetic — маршруты из BAT-файла
- MikroTik — импорт
.rsc-скрипта в RouterOS - WireGuard — split tunneling через
AllowedIPs - Linux —
ip routeчерез shell-скрипт
Готовы попробовать?
NetRoute Pro — бесплатное расширение Chrome для генерации маршрутов из любого сайта.
Установить расширение