Keenetic настройка выборочной маршрутизации
Для настройки нам потребуется установить на роутер OPKG систему пакетов из репозитория Entware.
Сразу оговорюсь некоторые пункты в зависимости от модели и версии прошивки будут находится в разных местах. Какие-то делать нужно, а какие-то иногда включены по-умолчанию.
1. Для начла подготовим USB накопитель.
На USB-накопителях, подключаемых к интернет-центру Keenetic можно использовать файловую систему EXT4. Данная возможность появилась с версии KeeneticOS 2.07.
Для работы накопителей с файловой системой EXT4 в роутере Keenetic предварительно нужно установить компонент "Файловая система Ext". Сделать это можно на странице "Общие настройки" в разделе "Обновления и компоненты", нажав на "Изменить набор компонентов".
2. В роутере Keenetic установите нужные компоненты OPKG. Основным и обязательным является компонент "Поддержка открытых пакетов".
В веб-интерфейсе Keenetic предыдущих поколений, с версией KeeneticOS до 2.11:
В моделях Keenetic с версией KeeneticOS 2.12 и выше:
Важно! Установка OPKG-пакетов возможна на моделях с USB-портами, c поддержкой работы USB-накопителей. Это актуальные модели 4G (KN-1212), Omni (KN-1410), Extra (KN-1710/1711/1713), Giga (KN-1010/1011/1012), Ultra SE (KN-2510), Giga SE (KN-2410), Ultra (KN-1810/1811), Viva (KN-1910/1912/1913), Hero 4G (KN-2310/2311), DSL (KN-2010), Skipper DSL (KN-2112), Duo (KN-2110), Ultra SE (KN-2510), Giant (KN-2610), Peak (KN-2710), Hopper (KN-3810/3811), Hopper DSL (KN-3610), Hopper SE (KN-3812) и модели прошлых поколений Zyxel Keenetic II / III, Extra, Extra II, Giga II / III, Omni, Omni II, Viva, Ultra, Ultra II.
3. Теперь нужно скачать репозиторий системы пакетов Entware соответствующий архитектуре нашего роутера.
Справка: Для моделей 4G (KN-1212), Omni (KN-1410), Extra (KN-1710/1711/1713), Giga (KN-1010/1011), Ultra (KN-1810), Viva (KN-1910/1912/1913), Giant (KN-2610), Hero 4G (KN-2310/2311), Hopper (KN-3810) и Zyxel Keenetic II / III, Extra, Extra II, Giga II / III, Omni, Omni II, Viva, Ultra, Ultra II используйте для установки архив mipsel — mipsel-installer.tar.gz
Для моделей Ultra SE (KN-2510), Giga SE (KN-2410), DSL (KN-2010), Skipper DSL (KN-2112), Duo (KN-2110), Ultra SE (KN-2510), Hopper DSL (KN-3610) и Zyxel Keenetic DSL, LTE, VOX используйте для установки архив mips — mips-installer.tar.gz
Для моделей Peak (KN-2710), Ultra (KN-1811), Giga (KN-1012), Hopper (KN-3811) и Hopper SE (KN-3812) используйте архив aarch64 — aarch64-installer.tar.gz
4. В нашем примере рассмотрим установку архива aarch64 .
Подключите уже подготовленный накопитель c файловой системой EXT4 к USB-порту роутера. Диск должен отобразиться на странице "Приложения" в разделе "Диски и принтеры".
5. Проверим, что на роутере включен сетевой доступ к USB накопителю
В Windows 10/11 для осуществления "Анонимного доступа" возможно придется включить Небезопасные гостевые входы.
6. На компьютере с помощью файлового менеджера подключитесь к диску по сети (в ОС Windows можно использовать Проводник). Создайте в корневой папке USB накопителя папку "install" и загрузите в нее ранее скачанный файл дистрибутива "OPKG". (адрес 192.168.1.1 заменяем на соответствующий вашему роутеру)
Входим под Гостевой учетной записью (для этого и нужен был Анонимный доступ)
7. В веб-интерфейсе роутера перейдите на страницу OPKG для выбора накопителя и добавления скрипта initrc.
Если у вас Keenetic с версией KeeneticOS 2.12 и выше, перейдите к пункту 8 данной инструкции.
Для Keenetic предыдущих поколений, с версией KeeneticOS до 2.11, перейдите в меню Приложения на вкладку OPKG и выполните следующие настройки:
Нажмите Применить.
8. Для Keenetic с версией KeeneticOS 2.12 и выше, перейдите на страницу OPKG и выполните следующие настройки:
Нажмите Сохранить.
9. Перейдите на страницу "Диагностика" и откройте "Системный журнал" роутера. В нем вы должны увидеть следующие записи при установке системы пакетов Entware:
I [May 24 20:36:35] ndm: Opkg::Manager: unmount existing /opt disk: OPKG:/. I [May 24 20:36:37] dropbear[31154]: Early exit: Terminated by signal I [May 24 20:36:37] ndm: Opkg::Manager: disk unmounted. I [May 24 20:36:37] ndm: Opkg::Manager: disk is set to: storage:/. I [May 24 20:36:37] ndm: Opkg::Manager: /storage mounted to /storage. I [May 24 20:36:37] ndm: Opkg::Manager: /storage mounted to /opt/. I [May 24 20:36:37] npkg: inflating "mipsel-installer.tar.gz". I [May 24 20:36:43] ndm: Opkg::Manager: /storage initialized. E [May 24 20:36:43] ndm: Opkg::Manager: invalid initrc "/opt/etc/init.d/rc.unslung": no such file or directory, trying /opt/etc/init.d/. I [May 24 20:36:43] ndm: Core::Server: started Session /var/run/ndm.core.socket. I [May 24 20:36:43] ndm: Core::Session: client disconnected. I [May 24 20:36:43] installer: [1/5] Начало установки системы пакетов "Entware"... I [May 24 20:36:43] ndm: Core::Server: started Session /var/run/ndm.core.socket. I [May 24 20:36:45] ndm: Core::Session: client disconnected. I [May 24 20:36:45] ndm: Core::Server: started Session /var/run/ndm.core.socket. I [May 24 20:36:47] ndm: Core::Session: client disconnected. I [May 24 20:36:47] ndm: Core::Server: started Session /var/run/ndm.core.socket. I [May 24 20:36:49] ndm: Core::Session: client disconnected. I [May 24 20:36:49] installer: Info: Раздел с UBIFS! (!не тестировалось!) I [May 24 20:36:49] installer: При возникновении проблем, используйте внешний накопитель с файловой системой ext2/ext3/ext4. I [May 24 20:36:49] installer: Info: "ping google.com"... I [May 24 20:36:49] ndm: Opkg::Manager: /opt/etc/init.d/doinstall: installer: Info: "ping google.com"... I [May 24 20:36:51] installer: Info: "ping google.com" ..... OK I [May 24 20:36:52] installer: Info: "ping bin.entware.net"... I [May 24 20:36:52] ndm: Opkg::Manager: /opt/etc/init.d/doinstall: installer: Info: "ping bin.entware.net"... I [May 24 20:36:54] installer: Info: "ping bin.entware.net" ..... OK I [May 24 20:36:55] installer: Info: Создание каталогов... I [May 24 20:36:55] installer: [2/5] Загрузка и установка основных пакетов... I [May 24 20:36:55] installer: Info: Устанавливается пакет "libgcc"... I [May 24 20:36:57] installer: Info: Пакет "libgcc" установлен. I [May 24 20:36:58] installer: Info: Устанавливается пакет "libc"... I [May 24 20:37:01] installer: Info: Пакет "libc" установлен. I [May 24 20:37:02] installer: Info: Устанавливается пакет "libpthread"... I [May 24 20:37:04] installer: Info: Пакет "libpthread" установлен. I [May 24 20:37:05] installer: Info: Устанавливается пакет "librt"... I [May 24 20:37:06] installer: Info: Пакет "librt" установлен. I [May 24 20:37:07] installer: Info: Устанавливается пакет "entware-release"... I [May 24 20:37:08] installer: Info: Пакет "entware-release" установлен. I [May 24 20:37:09] installer: Info: Устанавливается пакет "findutils"... I [May 24 20:37:11] installer: Info: Пакет "findutils" установлен. I [May 24 20:37:12] installer: Info: Устанавливается пакет "grep"... I [May 24 20:37:14] installer: Info: Пакет "grep" установлен. I [May 24 20:37:15] installer: Info: Устанавливается пакет "ldconfig"... I [May 24 20:37:17] installer: Info: Пакет "ldconfig" установлен. I [May 24 20:37:18] installer: Info: Устанавливается пакет "locales"... I [May 24 20:37:20] installer: Info: Пакет "locales" установлен. I [May 24 20:37:21] installer: Info: Устанавливается пакет "ndmq"... I [May 24 20:37:23] installer: Info: Пакет "ndmq" установлен. I [May 24 20:37:24] installer: Info: Устанавливается пакет "opkg"... I [May 24 20:37:27] installer: Info: Пакет "opkg" установлен. I [May 24 20:37:28] installer: Info: Устанавливается пакет "zoneinfo-asia"... I [May 24 20:37:29] installer: Info: Пакет "zoneinfo-asia" установлен. I [May 24 20:37:30] installer: Info: Устанавливается пакет "zoneinfo-europe"... I [May 24 20:37:32] installer: Info: Пакет "zoneinfo-europe" установлен. I [May 24 20:37:33] installer: Info: Устанавливается пакет "opt-ndmsv2"... I [May 24 20:37:35] installer: Info: Пакет "opt-ndmsv2" установлен. I [May 24 20:37:36] installer: Info: Устанавливается пакет "dropbear"... I [May 24 20:37:38] installer: Info: Пакет "dropbear" установлен. I [May 24 20:37:39] installer: Info: Устанавливается пакет "poorbox"... I [May 24 20:37:41] installer: Info: Пакет "poorbox" установлен. I [May 24 20:37:42] installer: Info: Устанавливается пакет "busybox"... I [May 24 20:37:48] installer: Info: Пакет "busybox" установлен. I [May 24 20:37:49] installer: Info: Установка пакетов прошла успешно! I [May 24 20:37:49] installer: [3/5] Генерация SSH-ключей... I [May 24 20:37:49] installer: Info: Генерируется ключ "rsa"... I [May 24 20:37:54] installer: Info: Ключ "rsa" создан. I [May 24 20:37:55] installer: Info: Генерируется ключ "ecdsa"... I [May 24 20:37:55] installer: Info: Ключ "ecdsa" создан. I [May 24 20:37:56] installer: Info: Генерируется ключ "ed25519"... I [May 24 20:37:56] installer: Info: Ключ "ed25519" создан. I [May 24 20:37:57] installer: [4/5] Настройка сценария запуска, установка часового пояса и запуск "dropbear"... I [May 24 20:37:57] ndm: Core::Server: started Session /var/run/ndm.core.socket. I [May 24 20:37:57] ndm: Core::Session: client disconnected. I [May 24 20:37:57] dropbear[17854]: Running in background I [May 24 20:37:57] ndm: Core::Server: started Session /var/run/ndm.core.socket. I [May 24 20:37:57] ndm: Opkg::Manager: configured init script: "/opt/etc/init.d/rc.unslung". I [May 24 20:37:57] ndm: Core::Session: client disconnected. I [May 24 20:37:57] ndm: Core::Server: started Session /var/run/ndm.core.socket. I [May 24 20:37:57] ndm: Core::System::Configuration: saving (ndmq/ci). I [May 24 20:37:57] ndm: Core::Session: client disconnected. I [May 24 20:37:57] installer: Можно открыть SSH-сессию для соединения с устройством (логин - root, пароль - keenetic, порт - 222). I [May 24 20:37:57] installer: [5/5] Установка системы пакетов "Entware" завершена! Не забудьте сменить пароль и номер порта
10. Скачайте терминальную программу Putty для работы с протоколами SSH и Telnet.
11. Запустите Putty, выберите тип подключения SSH, впишите IP-адрес роутера (по умолчанию 192.168.1.1), укажите 222-й порт и нажмите кнопку Open. (т.к. у меня был включен SSH у меня порт 222 у вас может быть 22 смотрите логи журнала)
Подтвердите добавление ключа безопасности в кэш программы Putty для продолжения установки соединения.
Для авторизации введите:
login as: root root@192.168.1.1's password: keenetic
Можно установить свой пароль. Для этого введите команду passwd:
# passwd
12. При успешной авторизации вы окажетесь в оболочке BusyBox v1.27.2 () built-in shell (ash). Теперь нужно обновить opkg-пакет, для этого введите команду opkg update:
# opkg update
13. Далее настроим нужный нам тип соединения до сервера, я буду использовать Wireguard. Чтоб не настраивать самому я загружу сразу готовый конфиг сгенерированный на сервере.
сам конфиг имеет следующий вид
14. Далее настраивается сама выборочная маршрутизация. Решение основано на немного допиленной мелкой утилите ipset-dns. Прошивка будет обращаться к ней для разрешения определённого доменного имени из пользовательского перечня, а та, в свою очередь, будет складывать результаты работы в отдельный набор ip-адресов. Далее этот набор используется для выборочного роутинга в VPN-соединение.
Установим необходимый пакет через Putty путем ввода команды:
# opkg install http://bin.entware.net/mipselsf-k3.4/test/ipset-dns-keenetic_0.2-1_all.ipk
Для настройки вам понадобится имя и подсеть VPN-интерфейса. Их можно увидеть в выводе команды ip addr. В примере это nwg0 и 172.16.81.5/32:
# ip addr
Внесите эти два параметра любым удобным способом в /opt/etc/bypass.conf по имеющемуся примеру в переменные VPN_NAME и VPN_SUBNET (я использовал редактор vi для записи нажимаем Esc и вводим ":w" для выхода вводим ":q"):
vi /opt/etc/bypass.conf
После чего решение готово к использованию. Запустите утилиту ipset-dns или просто перегрузите роутер:
/opt/etc/init.d/S52ipset-dns start
15. Список ресурсов для открытия через VPN-соединение удобно вести на странице Сетевые правила → Интернет фильтры → Настройка DNS. Пример добавления домена intel.com вместе с субдоменами:
16. Для добавления большого количества записей удобнее это сделать через консоль роутера. Подключиться к CLI роутера по SSH (именно к роутеру, а не OPKG) можно аналогично (11) пункту, разве что в Putty мы указываем 192.168.1.1 и 22 порт (предварительно необходимо на роутере включить доступ по SSH). Для авторизации используется логин и пароль Web панели роутера (admin и ваш пароль). О том что вы находитесь в CLI свидетельствует надпись "(config)>":
17. Аналог действий из пункта (15) выглядит следующим образом (можно заранее подготовить список доменов и просто вставить этот список в Putty помните вы ограничены 64-ью записями)
ip name-server 192.168.1.1:5353 intel.com
Для сохранения настроек вводим команду:
(config)> system configuration save
Для выхода из интерфейса командной строки (CLI) используйте команду:
(config)> exit
Важно! Используя Tab можно получить подсказки команд, для других настроек.
(config)> sys[Tab]
system - maintenance functions
(config)> system conf[Tab]
configuration - manage system configuration
Установка на OPKG Entware в раздел с файловой системой роутера
Начиная с версии 3.7.x для некоторых актуальных моделей Keenetic (KN-xxxx) появилась возможность записывать OPKG Entware в раздел с файловой системой UBIFS флэш-памяти NAND роутера, т.е. на встроенную память роутера.
Действия делаются аналогичные выше, по этому я буду рассматривать их кратко:
На странице "Приложения" в разделе "Диски и принтеры" нажмите на "Встроенное хранилище" и затем на встроенном разделе storage создайте папку install:
Так же в новых прошивках появилась возможность создать папку и загрузить файл на прямую из Web панели
А вот дальше есть отличия. Перед установкой нам необходимо подключиться к (CLI) роутера (16) и выбирать системный раздел storage:/ для установки OPKG Entware:
(config)> opkg disk storage:/ (config)> system configuration save (config)> exit
или
(config)> opkg disk storage: (config)> system configuration save (config)> exit
Так же скорее всего можно сделать из Web панели
В логе мы должны увидеть те же записи что и в (9)
Проверить доступ в OPKG можно не выходя из CLI:
(config)> exec sh BusyBox v1.33.0 () built-in shell (ash) /#
Меняем пароль для root пользователя (по умолчанию логин root, пароль keenetic):
/ # passwd root Changing password for root New password: Bad password: too weak Retype password: passwd: password for root changed by root
Пароль изменен, обновляем систему:
/ # opkg update Downloading http://bin.entware.net/mipselsf-k3.4/Packages.gz Updated list of available packages in /opt/var/opkg-lists/entware Downloading http://bin.entware.net/mipselsf-k3.4/keenetic/Packages.gz Updated list of available packages in /opt/var/opkg-lists/keendev / # opkg upgrade
Теперь можно настраивать VPN и устанавливать нужный opkg-пакет пункт (13) и далее...
Для удаления OPKG Entware необходимо зайти в интерфейс командной строки (CLI) интернет-центра и отключить запуск opkg командой:
(config)> no opkg disk Opkg::Manager: Disk is unset.
После размонтируйте системный раздел storage:/
(config)> no system mount storage: Core::FileSystem::Repository: "storage:" unmounted.
Удалите содержимое системного раздела storage:/
(config)> erase storage: Core::FileSystem::Repository: "storage:" erased.
Отключить OPKG из Web интерфейса можно, но форматировать внутренний накопитель можно только из CLI
Для написания статьи использовались следующие ресурсы:
https://help.keenetic.com/hc/ru/articles/115005875145-Использование-файловой-системы-EXT4-на-USB-накопителях
https://help.keenetic.com/hc/ru/articles/360021214160-Установка-системы-пакетов-репозитория-Entware-на-USB-накопитель
https://forum.keenetic.ru/topic/4299-entware/
https://forum.keenetic.ru/topic/16257-ipset-dns-для-выборочного-роутинга/
https://help.keenetic.com/hc/ru/articles/213965889-Интерфейс-командной-строки-CLI-интернет-центра
https://help.keenetic.com/hc/ru/articles/360021888880-Установка-OPKG-Entware-на-встроенную-память-роутера
Справочник команд CLI если кому-то нужен:
https://storage.googleapis.com/docs.help.keenetic.com/cli/3.9/ru/cli_manual_kn-1910_ru.pdf