ITENTA DNS Filter
Технологический стек
Перечень технологий: ОС, контейнеризация, хранилища, веб-серверы, СУБД, языки и среды разработки.
ITENTA DNS Filter · on-premise (в инфраструктуре заказчика)
Документ содержит перечень технологий, использованных при создании и применяемых при эксплуатации системы: операционные системы, средства виртуализации и контейнеризации, хранилища, веб- и прокси-серверы, платформы, СУБД, языки и среды разработки.
1. Сводная таблица
Ниже приведён состав технологического стека по категориям. Подробности по каждой категории — в последующих разделах.
| Категория | Состав |
|---|---|
| Операционные системы | Linux x86-64 (серверная часть); Alpine Linux 3.22 внутри контейнеров |
| Виртуализация | Не требуется. Работает как на физическом сервере, так и в виртуальной машине любого гипервизора |
| Контейнеризация | Docker Engine, Docker Compose v2 |
| Хранилища данных | PostgreSQL, ClickHouse, локальные тома контейнеров, файловый журнал запросов |
| Облачные платформы | Не используются |
| Веб- и прокси-серверы | nginx (web-консоль и страница блокировки) |
| Платформы и серверы приложений | Собственные службы на Go; отдельный сервер приложений не применяется |
| СУБД | PostgreSQL 16, ClickHouse 24.8 |
| Языки программирования | Go, TypeScript, SQL, Shell |
| Среды и инструменты разработки | Go toolchain, Node.js, Vite, Docker |
2. Операционные системы
| Назначение | Технология |
|---|---|
| Серверная часть | Linux x86-64 с установленной средой контейнеризации |
| Среда исполнения компонентов | Alpine Linux 3.22 — базовый образ всех контейнеров продукта |
| Рабочее место администратора | Любая ОС с современным веб-браузером; управление выполняется через web-консоль |
3. Виртуализация
Система не предъявляет требований к средствам виртуализации и не зависит от конкретного гипервизора. Развёртывание возможно:
на физическом сервере;
в виртуальной машине под управлением любого гипервизора, поддерживающего гостевую ОС Linux x86-64.
Собственные средства виртуализации в состав продукта не входят. Изоляция компонентов обеспечивается контейнеризацией (раздел 4).
4. Контейнеризация
| Технология | Версия | Назначение |
|---|---|---|
| Docker Engine | Актуальная поддерживаемая | Среда исполнения компонентов |
| Docker Compose | v2, не ниже 2.24 | Описание и запуск состава служб |
| Alpine Linux | 3.22 | Базовый образ контейнеров продукта |
Все компоненты поставляются готовыми образами контейнеров. Состав служб зафиксирован в конфигурации, роль сервера (головной или подчинённый узел) определяется при установке.
5. Хранилища данных
| Хранилище | Что хранит |
|---|---|
| PostgreSQL | Конфигурация системы: политики, категории и база категоризации, зоны, площадки и узлы, учётные записи, лицензии, параметры установки |
| ClickHouse | Журнал DNS-запросов и агрегаты для аналитики |
| Тома контейнеров | Постоянные данные СУБД и файловый журнал запросов |
| Файловая система сервера | Служебные секреты установки, TLS-ключи и сертификаты — в каталоге с ограниченным доступом |
| Резервные копии | Файл резервной копии головного сервера, зашифрованный паролем администратора |
6. Облачные платформы
Облачные платформы и внешние облачные сервисы не используются. Продукт поставляется в варианте on-premise и работает полностью в инфраструктуре заказчика.
Единственное внешнее взаимодействие — обращение к серверу лицензирования поставщика за базой категоризации ресурсов. Сервер лицензирования также может быть размещён в инфраструктуре заказчика. Пользовательские данные за пределы контура не передаются: запросы к базе категоризации выполняются по хеш-значениям доменных имён.
7. Веб- и прокси-серверы
| Компонент | Версия | Назначение |
|---|---|---|
| nginx | 1.27 | Отдача web-консоли по HTTPS и страницы блокировки |
| CoreDNS | 1.14 | Приём DNS-запросов, фильтрация, кеширование, публикация DNS-over-TLS и DNS-over-HTTPS |
| Unbound | Из состава Alpine Linux 3.22 | Рекурсивное разрешение имён и проверка подписей DNSSEC |
Обратный прокси-сервер общего назначения в составе продукта не применяется. Публикуемые сетевые интерфейсы ограничены портами DNS, страницы блокировки, web-консоли и интерфейса управления подчинёнными узлами.
8. Платформы и серверы приложений
Отдельный сервер приложений не используется. Все службы продукта — самостоятельные исполняемые файлы, собранные на языке Go, со встроенными сетевыми интерфейсами.
| Служба | Назначение |
|---|---|
| Служба фильтрации | Плагин фильтрации в составе CoreDNS: применение политик и категорий на пути DNS-запроса |
| Служба управления | REST-интерфейс web-консоли и защищённый интерфейс управления подчинёнными узлами |
| Служба категоризации | Компиляция и выдача снимка правил фильтрации |
| Служба приёма событий | Приём событий фильтрации и запись в аналитическое хранилище, экспорт во внешние системы |
| Служба синхронизации | Получение конфигурации с головного сервера (на подчинённых узлах) |
| Служба управления зонами | Применение правил маршрутизации зон в рекурсивном резолвере |
9. Системы управления базами данных
| СУБД | Версия | Назначение |
|---|---|---|
| PostgreSQL | 16 | Основное хранилище конфигурации; источник истины для головного сервера и подчинённых узлов |
| ClickHouse | 24.8 | Аналитическое хранилище журнала запросов; предрасчитанные почасовые агрегаты для отчётов |
Обе СУБД поставляются в составе продукта и разворачиваются автоматически. Внешние экземпляры СУБД не требуются.
10. Языки программирования
| Язык | Версия | Где применяется |
|---|---|---|
| Go | 1.25 | Все серверные компоненты: фильтрация, управление, категоризация, приём событий, синхронизация |
| TypeScript | 5.5 | Web-консоль администратора |
| SQL | — | Схемы и запросы к PostgreSQL и ClickHouse |
| Shell (bash) | — | Сценарии установки, запуска и обслуживания |
| Python | 3.12 | Только подготовка эксплуатационной документации; в состав поставляемого ПО не входит |
10.1. Основные библиотеки и компоненты
| Компонент | Версия | Назначение |
|---|---|---|
| CoreDNS | 1.14 | Каркас DNS-сервера, в который встроен плагин фильтрации |
| miekg/dns | 1.1 | Работа с протоколом DNS |
| pgx | 5.10 | Драйвер PostgreSQL |
| golang-jwt | 5.3 | Сеансовые токены web-консоли |
| Prometheus client | 1.23 | Публикация метрик |
| React | 18.3 | Каркас web-консоли |
| Ant Design | 5.20 | Библиотека элементов интерфейса |
| React Router | 6.26 | Маршрутизация в web-консоли |
10.2. Криптографические механизмы
| Механизм | Где применяется |
|---|---|
| TLS 1.2 и выше | Web-консоль, DNS-over-TLS, DNS-over-HTTPS, интерфейс управления подчинёнными узлами |
| ECDSA P-256 | Сертификаты интерфейса управления и web-консоли |
| Ed25519 | Подпись лицензионных ключей и проверка их подлинности |
| bcrypt | Хранение паролей учётных записей |
| Argon2id и XChaCha20-Poly1305 | Шифрование резервных копий головного сервера |
| DNSSEC | Проверка подлинности ответов при рекурсивном разрешении имён |
11. Среды и инструменты разработки
| Инструмент | Версия | Назначение |
|---|---|---|
| Go toolchain | 1.25 | Сборка и тестирование серверных компонентов |
| Node.js | 22 | Сборка web-консоли |
| Vite | 5.4 | Сборщик web-консоли |
| Docker и Docker Compose | v2 | Сборка образов, локальный стенд, интеграционные тесты |
| Git | — | Система контроля версий |
Сборка поставляемого пакета выполняется одним сценарием: собираются образы компонентов, к ним добавляются сторонние образы СУБД и веб-сервера, сценарии установки, конфигурация и документация. Полученный архив содержит всё необходимое и не требует доступа в интернет на стороне заказчика.