Files
Keenetic-Split-DNS/README.md
Андрей Бобырев bc9355fe40 Initial release: install, uninstall, SmartDNS, web UI
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-24 22:15:37 +03:00

5.4 KiB
Raw Blame History

Keenetic-Split-DNS

Split-DNS для роутеров Keenetic с Entware: домены Yandex, VK, Mail.ru, OK и др. резолвятся через выбранный DNS-over-TLS upstream (например Yandex 77.88.8.8:853), остальной трафик — через DNS провайдера / Keenetic.

Веб-интерфейс на русском, порт 3200, только LAN.

Быстрая установка

curl -fsSL https://raw.githubusercontent.com/andrey271192/Keenetic-Split-DNS/main/install.sh | sh

После установки откройте http://<LAN_IP>:3200 (токен API выводится в консоль).

Удаление

curl -fsSL https://raw.githubusercontent.com/andrey271192/Keenetic-Split-DNS/main/uninstall.sh | sh

С удалением пакетов Entware:

curl -fsSL https://raw.githubusercontent.com/andrey271192/Keenetic-Split-DNS/main/uninstall.sh | sh -s -- --purge

Требования

Компонент Описание
Роутер Keenetic Актуальная прошивка с Entware
USB + Entware /opt/bin/opkg
Компоненты Keenetic Entware (установка из магазина), при Neo — см. ниже
Пакеты Entware smartdns, lighttpd, lighttpd-mod-cgi, ca-certificates, curl, bind-dig (устанавливает install.sh)

Что делает установщик

  1. Копирует файлы в /opt/etc/keenetic-split-dns/ и /opt/share/keenetic-split-dns/
  2. Создаёт config.yaml из примера, подставляет LAN IP (br0)
  3. Генерирует токен API → /opt/etc/keenetic-split-dns/token
  4. Собирает smartdns.conf из YAML (compile-config.sh)
  5. Включает init-скрипты S97ksd-compile, S98smartdns, S99ksd-web
  6. По возможности: opkg dns-override enable (предпочтительно для HydraRoute Neo)
  7. Иначе: правило netfilter.d для перенаправления DNS с br0

Конфигурация

Основной файл:

/opt/etc/keenetic-split-dns/config.yaml

Списки доменов:

/opt/etc/keenetic-split-dns/domain-sets/ru-services.txt

Пересборка и применение вручную:

/opt/share/keenetic-split-dns/scripts/apply.sh

Upstream по умолчанию

ID Тип Назначение
yandex-dot DoT 77.88.8.8:853, SNI common.dot.dns.yandex.net
isp-default UDP auto — DNS Keenetic / ISP

Предзаполненные домены

yandex.ru, ya.ru, yandex.com, yandex.net, yastatic.net, yandex.st, mail.ru, mail.com, imgsmail.ru, mycdn.me, vk.com, vk.me, vkuservideo.net, vkuseraudio.net, userapi.com, vk-cdn.net, ok.ru, odnoklassniki.ru, okcdn.ru

Веб-интерфейс

Вкладка Функции
Обзор Статус SmartDNS, счётчики
Upstream Master-detail: профиль → домены группы
Домены Таблица, поиск, экспорт
Проверка dig через локальный SmartDNS
Настройки Редактор YAML, токен, «Применить»

API (CGI): GET/POST /api/status, /api/domains, /api/config, /api/reload, /api/test

Авторизация: заголовок Authorization: Bearer <token> или X-KSD-Token.

⚠️ Конфликт с DoT в Keenetic

В прошивке Keenetic (Интернет-фильтры → Настройка DNS) глобальный DNS-over-TLS обрабатывает все запросы и не умеет привязку «домен → сервер».

Рекомендация: отключите глобальный DoT в UI Keenetic и используйте split-DNS этого проекта. Иначе политики SmartDNS могут не применяться к клиентам.

Совместимость с HydraRoute Neo

HydraRoute Neo маршрутизирует по IP из DNS (NFLOG), а не выбирает upstream DNS.

Правило Действие
DHCP DNS IP роутера в LAN (192.168.x.1)
DNS path Предпочтительно opkg dns-override → SmartDNS на Entware
Глобальный DoT Keenetic Выключить
Порты HRweb 2000, Split-DNS UI 3200 — не пересекаются
Проверка После установки — диагностика в HRweb

Установщик сохраняет состояние dns-override в /opt/etc/keenetic-split-dns/dns-override.state; uninstall.sh пытается восстановить прежний dns-override.conf.

Структура репозитория

install.sh / uninstall.sh
scripts/          detect-lan, compile-config, apply, api
etc/              config.yaml.example, domain-sets, lighttpd, smartdns, ndm
www/              index.html, app.js, style.css
cgi-bin/api.cgi
init.d/           S97ksd-compile, S98smartdns, S99ksd-web

Лицензия

MIT — см. LICENSE.

Автор

andrey271192