В KeeneticOS есть несколько способов организовать маршрутизацию для определённых ресурсов через туннели. Прошивка KeeneticOS позволяет прям из веб-интерфейса установить клиенты для таких VPN-протоколов, как Wireguard, OpenVPN, IPsec. И можно задать статические маршруты, которые будут направлены в эти туннели.
А для более продвинутых способов потребуется Entware.
Видеоверсия
Статические маршруты
Этот лёгкий способ, который производится прямо из веб-интерфейса. Но он имеет два недостатка:
- Жёстко заданные подсети и IP-адреса. Нужно отслеживать и добавлять вручную
- Нет поддержки Shadowsocks, XRay, Sing-box
С самого начала нужно установить и настроить один из VPN-туннелей. Для примера возьмём Wireguard. Управление - Параметры системы - Изменить набор компонентов
Наберите wire и появится пакет Wireguard VPN. Ставьте галку напротив и кнопка Обновить KeeneticOS.
После ребута роутера (шёл 2024 год) заходим в Интернет - Другие подключения. В поле Wireguard можно настроить вручную через Добавить подключение, либо Загрузить из файла, если у вас есть готовый конфиг. После этого нажимаете ползунок около подключения.
Если в Последнее рукопожатие, Отправлено и Получено ненулевые значения, значит, подключилось успешно.
Теперь нужно понять, какие 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
Заходим в Сетевые правила - Маршрутизация. Кнопка Добавить Маршрут. Маршрут до узла - это когда требуется маршрут только к одному IP-адресу. Маршрут до сети - это когда маршрут до целой подсети.
Добавляете Адрес сети назначения и выбираете интерфейс, который был создан вначале. Ставьте галку у Добавлять автоматически, чтобы маршрут поднимался при старте роутера. После сохранения правила маршрут сразу начнёт работать.
Теперь маршрут до IP-адресов в подсети 188.114.96.0/20 должен идти через туннель. Проверим с помощью утилит mtr\traceroute\tracert. Для Windows в командной строке наберите tracert graylog.org
.
Второй 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 есть две инструкции:
- Установка OPKG Entware на встроенную память роутера
- Установка системы пакетов репозитория Entware на USB-накопитель
В вики проекта указано, что не стоит использовать встроенную память для 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
, и он сам автоматически поймёт, что не установлен и нужно установиться.
Использование
После установки в dnsmasq находятся несколько доменов (kvas show
). И предполагается, что нужно загружать свои.
KVAS использует dnsmasq с поддержкой regex. Это означает, что вы можете добавить, например, gemini.google.com и будут резолвится IP-адреса только этого субдомена, а не всего google.com.
Это можно выбрать при добавлении домена.
Ну добавлять по одному домену это то ещё приключение, поэтому я добавил специально отформатированный под 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
Выбираем первый вариант.
Вводим домен сервера, порт, метод шифрования и пароль.
Удаление
Тут важно понимать, что 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
Логи
Все логи приложений пишутся в одно место. Посмотреть можно из веб-интерфейса Управление - Диагностика - Системный журнал - Показать журнал.
Все обновления и новые статьи публикую в моём телеграм-канале .