В KeeneticOS есть несколько способов организовать маршрутизацию для определённых ресурсов через туннели. Прошивка KeeneticOS позволяет прям из веб-интерфейса установить клиенты для таких VPN-протоколов, как Wireguard, OpenVPN, IPsec. И можно задать статические маршруты, которые будут направлены в эти туннели.

А для более продвинутых способов потребуется Entware.

Статические маршруты

Этот лёгкий способ, который производится прямо из веб-интерфейса. Но он имеет два недостатка:

  • Жёстко заданные подсети и IP-адреса. Нужно отслеживать и добавлять вручную
  • Нет поддержки Shadowsocks, XRay, Sing-box

С самого начала нужно установить и настроить один из VPN-туннелей. Для примера возьмём Wireguard. Управление - Параметры системы - Изменить набор компонентов keneetic-wg

Наберите wire и появится пакет Wireguard VPN. Ставьте галку напротив и кнопка Обновить KeeneticOS.

После ребута роутера (шёл 2024 год) заходим в Интернет - Другие подключения. В поле Wireguard можно настроить вручную через Добавить подключение, либо Загрузить из файла, если у вас есть готовый конфиг. После этого нажимаете ползунок около подключения.

keneetic-wg-check

Если в Последнее рукопожатие, Отправлено и Получено ненулевые значения, значит, подключилось успешно.

Теперь нужно понять, какие IP-адреса необходимо направлять в туннель. Для примера будем рассматривать сайт https://graylog.org/ , который находится за CloudFlare и в WAF прописан геоблок для России.

Подсети CF известны и находятся тут https://www.cloudflare.com/ips/ . На момент написания этого материала graylog.org зарезолвился в 188.114.99.224 и 188.114.98.224. Это подсеть 188.114.96.0/20, её и добавим в статический маршрут. У вас вполне вероятно будут другие IP-адреса, принадлежащие другой подсети. Проверить это можно командой nslookup graylog.org keneetic-nslookup

Заходим в Сетевые правила - Маршрутизация. Кнопка Добавить Маршрут. Маршрут до узла - это когда требуется маршрут только к одному IP-адресу. Маршрут до сети - это когда маршрут до целой подсети.

keneetic-static-route

Добавляете Адрес сети назначения и выбираете интерфейс, который был создан вначале. Ставьте галку у Добавлять автоматически, чтобы маршрут поднимался при старте роутера. После сохранения правила маршрут сразу начнёт работать.

Теперь маршрут до IP-адресов в подсети 188.114.96.0/20 должен идти через туннель. Проверим с помощью утилит mtr\traceroute\tracert. Для Windows в командной строке наберите tracert graylog.org. keneetic-tracert

Второй IP-адрес - это шлюз Wireguard.

Также попробуйте просто открыть сайт https://graylog.org/ .

Это хороший метод, с которого можно начать, но в 2024 году он не удобен и не актуален в большинстве случаев.

KVAS

По моему мнению, это самое простое и удобное решения для Keentic на данный момент.

Для установки этого решения потребуется Entware. Entware - это среда в которую можно установить пакеты, которых нет в стандартном наборе “модулей” KeeneticOS. Думаю, она предполагалась как просто небольшое расширение стандартного функционала. Но по итогу это начали использовать для всяких изощрённых вещей. Проблема в том, что всю логику того, что вы хотите туда запихать, нужно описывать скриптами. Например, для правил фаервола нужно прописывать прям скрипт с iptables -A bla bla. После OpenWrt (оттуда берутся как раз эти пакеты и пакетный менеджер opkg, через который ставятся эти пакеты) это выглядит очень неудобно. Настраивать какую-то даже не особо сложную логику получается непросто. Вам нужно насоздавать кучу скриптов в разных местах и всё это ещё совместить с обычным функционалом роутера.

Для OpenWrt я предлагаю использовать для этого связку nftables+dnsmasq. Там это настраивается через стандартную конфигурацию, можно даже через веб-интерфейс натыкать.

В Entware такую связку делать сложнее и как раз KVAS упрощает это. KVAS тоже использует dnsmasq, но iptables (там ещё не совершён переход к nftables). Он автоматически создаёт структуру скриптов для работы ipset+dnsmasq, подключением туннеля и ещё пары вещей. Для настройки предоставляется wizard (пошаговая настройка) и дальнейшее управление этим хозяйством через командную строку.

Самая важная страница документации KVAS как раз описывает его установку.

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

Туннели

Вы можете использовать любой туннель, которые предоставляет KeeneticOS и настроить его прямо из веб-интерфейса. Либо использовать Shadowsocks (старая версия), который настраивается через интерфейс KVAS. Реализуется через ss-redir. При установке wizard просканирует запущенные туннели и предоставит выбрать один, через который будет гоняться трафик.

Установка Entware

Вам нужно будет установить Entware. У Keentic есть две инструкции:

В вики проекта указано, что не стоит использовать встроенную память для Entware и это спорный момент. Для маркировки трафика и занесения IP-адресов в ipset не используется флеш-память. Из увиденного мной флеш-память используется при загрузке пакета, потому что он грузится в /opt. Это не правильно и пакеты нужно грузить в /tmp, раздел который расположен на оперативной памяти. И то если программа где-то ещё использует флеш-память для постоянной записи, это вопрос к программе, так быть не должно.

Во внешних USB-накопителях был смысл, когда роутеры имели 4-16МБ флеш-памяти. Сейчас многие Keenetic роутеры имеют 128МБ, что вполне хватает для всех пакетов, которые использует KVAS. Проблема использования extroot на флешке очевидна, USB-флешка может отвалиться, в отличие от распаянной на плате флеш-памяти. Использовать этот пережиток стоит только в случае, если у вас старый роутер или младшая модель современного роутера.

У меня KVAS отлично работал на Keentic Viva KN-1912, который имеет 128МБ флеш-памяти.

Отключение DNS

Командой opkg dns-override производится отключение встроенного DNS-сервера для клиентов. Это нужно , чтобы KVAS поднял другой DNS-сервер - Dnsmasq. Имейте в виду, что эта опция должна производиться после установки Entware, с ней Entware не установится.

Если вам потребуется выключить эту опцию:

no opkg dns-override
system configuration save

Секретное меню А для команд

В веб-интерфейсе в адресной строке после / удалите содержимое и поставьте a. Откроется секретное меню, в которое можно вводить команды.

Подключение по SSH

Если у вас был уже установлен модуль SSH-сервер, доступ до entware будет производиться по 222 порту. Если модуля нет, то по стандартному 22.

Для Entware дефолтные логин/пароль: root/keenetic. Публичные ключи для доступа по ключу хранятся в /opt/etc/dropbear/authorized_keys. В Linux ключ можно скопировать так:

scp -P 222 ~/.ssh/id_rsa.pub root@192.168.1.1:/opt/etc/dropbear/authorized_keys

Либо просто создайте файл authorized_keys в /opt/etc/dropbear/, где будут ваши public keys.

И кстати, к entware можно ходить из основной консоли, набрав exec sh.

И можно также обратно послать команду из entware в keenetic cmd:

ndmc -c "cli command"

Установка

Есть вероятность, что самый последний релиз будет с какими-то багами. И если у вас что-то не работает, можно попробовать откатиться на предыдущую версию.

Если установка у вас не удалась с первого раза, просто вызовите команду kvas, и он сам автоматически поймёт, что не установлен и нужно установиться.

keneetic-check-install

Использование

После установки в dnsmasq находятся несколько доменов (kvas show). И предполагается, что нужно загружать свои. KVAS использует dnsmasq с поддержкой regex. Это означает, что вы можете добавить, например, gemini.google.com и будут резолвится IP-адреса только этого субдомена, а не всего google.com. Это можно выбрать при добавлении домена.

keneetic-check-install

Ну добавлять по одному домену это то ещё приключение, поэтому я добавил специально отформатированный под KVAS список доменов. Находится он тут https://github.com/itdoginfo/allow-domains .

Скачать и импортировать:

cd /tmp && curl -O https://raw.githubusercontent.com/itdoginfo/allow-domains/main/Russia/inside-kvas.lst && kvas import inside-kvas.lst

Это займёт какое-то время, потому что KVAS помимо добавления в dnsmasq ещё параллельно резолвит эти домены, что занимает прилично времени.

Посмотреть на загруженное

kvas show

Переключение с туннеля на shadowsocks

kvas vpn set

Выбираем первый вариант.

Вводим домен сервера, порт, метод шифрования и пароль. keneetic-shadowsocks

Удаление

Тут важно понимать, что KVAS не удаляет полностью всё то, что он создал. Вы не получите чистую среду Entware после удаления.

Xkeen

Этот пакет устанавливает и настраивает XRay. У него есть тоже wizard, но проект свежий и его настройка не является простой. Нужно сидеть и погружаться. Вероятно, в будущем разработчица сделает более упрощённый интерфейс и тогда я сделаю на него обзор.

Ссылки, чтоб разобраться самостоятельно:

Общее по Keenetic

Управление службами

init скрипты в entware лежат в /opt/etc/init.d.

Пример как рестартануть dnsmasq

/opt/etc/init.d/S56dnsmasq restart

Включить стоковый DNS-сервер обратно

/opt/etc/init.d/S56dnsmasq stop

В консоли keeneticOS

no opkg dns-override
system configuration save
system reboot

Логи

Все логи приложений пишутся в одно место. Посмотреть можно из веб-интерфейса Управление - Диагностика - Системный журнал - Показать журнал.


Все обновления и новые статьи публикую в моём телеграм-канале .