Маршруты для Keenetic VPN с GitHub: настройка, автоматизация и безопасность

Как использовать готовые списки маршрутов с GitHub для Keenetic VPN, настроить разделение трафика, избежать DNS-утечек и проверить работу туннеля.

Зачем нужны статические маршруты на Keenetic

Роутеры Keenetic поддерживают гибкую маршрутизацию, позволяя направлять трафик определённых сайтов или подсетей через VPN-туннель, в то время как остальной интернет-трафик идёт напрямую через провайдера. Это называется разделением туннеля (split tunneling) и решает несколько задач: экономия трафика VPN-провайдера, снижение задержек для локальных сервисов и обход блокировок только для нужных ресурсов.

Статические маршруты особенно полезны, когда VPN-подключение используется не для всего трафика, а только для конкретных доменов — например, видеохостингов, мессенджеров или новостных сайтов. Вместо того чтобы включать VPN глобально, вы добавляете маршруты для IP-адресов этих сервисов, и роутер автоматически отправляет их через туннель.

На Keenetic маршруты можно добавлять вручную через веб-интерфейс, через командную строку (CLI) или загружая готовые BAT-файлы. Последний способ особенно удобен, когда нужно добавить сотни маршрутов — например, для CDN-сетей, которые используют множество IP-адресов.

Готовые списки маршрутов на GitHub: что это и как работают

GitHub — популярная площадка, где энтузиасты публикуют готовые наборы статических маршрутов для Keenetic. Эти списки обычно представлены в виде BAT-файлов (формат Windows route ADD) или текстовых файлов с CIDR-записями. Например, проект RockBlack-VPN/ip-address на GitHub предоставляет маршруты для популярных сервисов, таких как YouTube, которые можно использовать с VPN-соединениями AmneziaWG или WireGuard.

Принцип работы прост: вы скачиваете файл с маршрутами, загружаете его в веб-интерфейс Keenetic в разделе «Маршрутизация», выбираете VPN-интерфейс, к которому нужно привязать маршруты, и роутер автоматически добавляет их. Шлюзы в BAT-файле игнорируются — Keenetic использует указанный интерфейс.

Такие списки часто обновляются, так как IP-адреса CDN-сетей меняются. Поэтому важно следить за обновлениями репозитория или использовать инструменты, которые генерируют маршруты на лету, например расширение NetRoute Pro.

Как загрузить маршруты из BAT-файла на Keenetic

Процесс загрузки маршрутов из BAT-файла на Keenetic не требует специальных знаний и занимает несколько минут. Вот пошаговая инструкция:

  1. Подготовьте файл: скачайте BAT-файл с GitHub или сгенерируйте его с помощью расширения NetRoute Pro. Убедитесь, что файл содержит строки в формате route ADD <сеть> MASK <маска> <шлюз>, например route ADD 1.1.1.0 MASK 255.255.255.0 0.0.0.0.
  1. Откройте веб-интерфейс роутера: перейдите по адресу http://my.keenetic.net или IP-адресу роутера, войдите под администратором.
  1. Перейдите в раздел маршрутизации: в меню выберите «Управление» → «Маршрутизация» → вкладка «IPv4-маршруты».
  1. Загрузите файл: нажмите кнопку «Загрузить», выберите BAT-файл, затем в выпадающем списке «Интерфейс» укажите ваш VPN-туннель (например, Wireguard0 или AmneziaWG). Подтвердите загрузку.
  1. Проверьте результат: маршруты появятся в списке с привязкой к выбранному интерфейсу. Если что-то пошло не так, проверьте, что VPN-интерфейс активен и включена опция «Использовать для выхода в Интернет» в настройках подключения.

Этот метод работает даже на базовых прошивках Keenetic и позволяет применить сотни маршрутов за секунду.

Альтернативный способ: WireGuard AllowedIPs

Если вы используете WireGuard, можно обойтись без статических маршрутов, задав нужные подсети прямо в параметре AllowedIPs пира. Это более элегантное решение, так как маршруты создаются автоматически при установке туннеля.

Для этого в NetRoute Pro выберите платформу WireGuard, скопируйте строку AllowedIPs и вставьте её в настройки пира в Keenetic (Интернет → WireGuard → настройки пира → поле Allowed IPs). После сохранения роутер сам добавит маршруты для указанных подсетей.

Преимущество этого метода в том, что маршруты обновляются автоматически при переподключении туннеля, и нет необходимости вручную загружать BAT-файлы. Однако он подходит только для WireGuard, тогда как статические маршруты работают с любым VPN-протоколом — OpenVPN, IKEv2, OpenConnect и другими.

Проблемы с мобильными приложениями и их решение

Пользователи Keenetic часто сталкиваются с ситуацией, когда маршруты работают на ПК и ТВ, но мобильные приложения (Android, iOS) не могут воспроизводить видео или загружать контент. Это связано с особенностями работы мобильных приложений, которые могут использовать дополнительные IP-адреса или протоколы, не покрытые маршрутами.

Одно из решений — создание отдельной политики доступа для мобильных устройств. В Keenetic можно создать политику, в которой указать основное соединение и VPN, а затем включить многопутевую передачу (multipath). Это позволяет трафику идти одновременно по двум каналам, что часто решает проблему.

Другой вариант — проверить, все ли IP-адреса ресурса включены в маршруты. Иногда приложение использует адреса, которые не попали в список, особенно если CDN-сеть имеет много подсетей. В этом случае поможет трассировка или использование более полных списков маршрутов.

Также стоит учитывать, что некоторые VPN-протоколы (например, AmneziaWG) могут работать хуже с мобильными приложениями, чем обычный WireGuard. Если проблема не решается, попробуйте переключиться на другой протокол.

DNS-утечки: как их избежать при использовании маршрутов

Статические маршруты на Keenetic направляют только IP-трафик, но не DNS-запросы. По умолчанию LAN-клиенты обращаются к DNS-прокси Keenetic, который форвардит запросы на DNS-серверы провайдера. Это означает, что провайдер видит, какие сайты вы посещаете, даже если сам трафик зашифрован VPN.

Чтобы избежать DNS-утечек, есть три основных подхода:

  1. Направить DNS через VPN: в настройках VPN-интерфейса (Интернет → Другие подключения) установите его как приоритетный для DNS, либо задайте статические DNS-серверы VPN-провайдера в «Сетевые правила» → «Интернет-фильтры».
  1. Использовать DoH/DoT: Keenetic поддерживает DNS-over-HTTPS и DNS-over-TLS. Добавьте публичные резолверы, такие как Cloudflare (1.1.1.1), AdGuard (94.140.14.140) или Quad9 (9.9.9.9), в качестве системных. Это скроет DNS-запросы от провайдера.
  1. Принять утечку: если модель угроз не требует скрытия DNS, можно оставить всё как есть. Но помните, что провайдер будет видеть список посещаемых доменов.

Проверить наличие утечек можно с помощью сервиса dnsleaktest.com — показанный резолвер должен принадлежать вашему VPN или выбранному DoH, а не провайдеру.

Проблема IPv6: почему маршруты могут не работать

Статические IPv4-маршруты покрывают только IPv4-трафик. Если сайт имеет AAAA-запись (IPv6-адрес), а у большинства популярных ресурсов она есть, то LAN-клиенты по умолчанию предпочтут IPv6 (согласно RFC 6724). В результате запрос пойдёт через дефолтный IPv6-маршрут провайдера, минуя VPN, и маршруты не сработают.

Есть два способа решения:

  1. Сгенерировать IPv6-маршруты: если ваш VPN-провайдер поддерживает IPv6, можно создать отдельный BAT-файл с IPv6-префиксами (например, 2606:4700::/32 для Cloudflare) и импортировать его с привязкой к VPN-интерфейсу.
  1. Отключить IPv6: если VPN не поддерживает IPv6, проще отключить его глобально в настройках Keenetic (Интернет → Подключения → IPv6). Тогда весь трафик будет идти по IPv4 и корректно тунелироваться.

Важно помнить, что отключение IPv6 может повлиять на доступность некоторых сайтов, которые работают только по IPv6, но таких меньшинство.

Проверка работы маршрутов: реальные методы

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

  1. Проверка exit IP: с LAN-клиента выполните curl -v https://example.com 2>&1 | grep "Connected to" — IP-адрес должен принадлежать одному из ваших routed-CIDR. Также можно зайти на сайт, который показывает ваш IP (например, api.ipify.org), и сравнить его с IP провайдера.
  1. Проверка счётчиков на роутере: подключитесь к Keenetic по SSH или Telnet и выполните show interface stat <VPN_IF> — счётчики RX/TX должны расти, когда LAN-клиент заходит на routed-сайт.
  1. Использование трассировки: хотя traceroute часто ненадёжен из-за фильтрации ICMP, он может показать, что пакеты идут через VPN-туннель, если первый хоп — IP вашего VPN-сервера.

Не полагайтесь только на визуальное воспроизведение видео — лучше проверить технически, чтобы убедиться, что маршрутизация работает корректно.

Инструменты для генерации маршрутов: NetRoute Pro и Telegram-боты

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

NetRoute Pro — бесплатное расширение для Chrome, которое анализирует открытый сайт и генерирует BAT-файл с маршрутами. Оно поддерживает агрегацию подсетей (например, /24), что уменьшает количество записей, и может использовать RIPE BGP-оптимизацию для замены отдельных IP на реальные BGP-префиксы провайдера. Однако для shared CDN (Cloudflare, AWS) BGP-оптимизация может добавить десятки тысяч несвязанных IP, поэтому для таких сетей лучше использовать обычную CIDR-агрегацию.

Telegram-боты — например, @keen_routes_bot — позволяют получить маршруты для известных сайтов или по собственному списку URL. Бот опрашивает несколько DNS-серверов и собирает IP-адреса, затем выдаёт готовый файл для загрузки в Keenetic. Это удобно, если нужно быстро получить маршруты для конкретного ресурса.

Оба инструмента экономят время и снижают риск ошибок, особенно когда речь идёт о десятках и сотнях маршрутов.

Частые ошибки и советы по оптимизации

При настройке маршрутов на Keenetic пользователи часто допускают несколько типичных ошибок:

  • Не включена опция «Использовать для выхода в Интернет» для VPN-интерфейса. Без неё Keenetic не делает NAT для LAN-трафика, и VPN-сервер видит пакеты с внутренними IP, что приводит к их отбрасыванию.
  • Не все IP-адреса ресурса покрыты маршрутами. CDN-сети постоянно меняют IP, поэтому маршруты устаревают. Регулярно обновляйте списки или используйте инструменты с BGP-оптимизацией.
  • Игнорирование IPv6. Как уже упоминалось, без IPv6-маршрутов часть трафика может уходить мимо VPN.
  • Избыточное количество маршрутов. Keenetic без проблем держит сотни маршрутов, но если их тысячи, лучше использовать WireGuard AllowedIPs.

Советы по оптимизации:

  • Используйте агрегацию подсетей (/24 вместо /32), чтобы уменьшить количество записей.
  • Для коммерческих VPN-провайдеров не включайте дополнительный masquerade — сервер уже делает SNAT.
  • Проверяйте DNS-утечки после настройки и при необходимости включайте DoH/DoT.
  • Следите за обновлениями репозиториев на GitHub, чтобы маршруты оставались актуальными.

Вопросы и ответы

Как добавить маршруты из GitHub на Keenetic?

Скачайте BAT-файл с GitHub (например, из репозитория RockBlack-VPN/ip-address), затем в веб-интерфейсе Keenetic перейдите в «Управление» → «Маршрутизация» → вкладка «IPv4-маршруты», нажмите «Загрузить», выберите файл и укажите VPN-интерфейс. Keenetic автоматически применит маршруты, игнорируя шлюзы из файла.

Почему маршруты работают на ПК, но не на мобильных устройствах?

Мобильные приложения могут использовать дополнительные IP-адреса или протоколы, не покрытые маршрутами. Попробуйте создать отдельную политику доступа для мобильных устройств с включённой многопутевой передачей, либо проверьте, все ли подсети ресурса включены в маршруты. Также может помочь переход с AmneziaWG на обычный WireGuard.

Как избежать DNS-утечек при использовании статических маршрутов?

Настройте VPN-интерфейс как приоритетный для DNS в «Интернет» → «Другие подключения», либо задайте статические DNS-серверы VPN-провайдера. Альтернативно включите DoH/DoT в «Сетевые правила» → «Интернет-фильтры», добавив публичные резолверы. Проверьте утечки через dnsleaktest.com.

Что делать, если маршрут добавлен, но трафик не идёт через VPN?

Проверьте, что VPN-интерфейс активен и включена опция «Использовать для выхода в Интернет» в настройках подключения. Убедитесь, что нет блокирующих правил файрвола. Для коммерческих VPN не включайте дополнительный masquerade — сервер уже делает SNAT. Также проверьте, не уходит ли трафик по IPv6.

Как часто нужно обновлять маршруты для CDN-сайтов?

CDN-сети (Cloudflare, Fastly) меняют IP-адреса регулярно, поэтому маршруты могут устаревать. Рекомендуется обновлять списки раз в несколько недель или использовать инструменты с RIPE BGP-оптимизацией, которые подставляют актуальные BGP-префиксы. Для shared CDN лучше использовать обычную CIDR-агрегацию, чтобы избежать избыточных маршрутов.

Можно ли использовать WireGuard AllowedIPs вместо статических маршрутов?

Да, если вы используете WireGuard. В настройках пира в Keenetic вставьте список подсетей в поле Allowed IPs — маршруты создадутся автоматически. Это удобнее, так как не нужно загружать BAT-файлы, и маршруты обновляются при переподключении. Однако этот метод не подходит для других VPN-протоколов.

Как проверить, что трафик реально идёт через VPN?

С LAN-клиента выполните curl -v https://example.com 2>&1 | grep "Connected to" — IP должен принадлежать routed-CIDR. Также можно проверить exit IP через api.ipify.org. На роутере через SSH выполните show interface stat <VPN_IF> — счётчики должны расти при обращении к routed-сайту. Traceroute ненадёжен из-за фильтрации ICMP.