DNSO — это локальный DNS-сервер с веб-интерфейсом для управления DNS-зонами и записями. Позволяет создавать собственные DNS-зоны, добавлять записи типов A, AAAA, CNAME, MX, TXT, NS, SOA и проксировать остальные запросы к вышестоящему DNS-серверу.
Написан на Go, данные хранит в SQLite.
- Локальный DNS-сервер (UDP) с поддержкой кастомных зон
- Управление зонами и DNS-записями через веб-интерфейс (SPA, тёмная тема)
- Проксирование запросов к upstream DNS (по умолчанию
8.8.8.8:53) - In-memory кэширование DNS-ответов с учётом TTL
- Автоматический CNAME-резолвинг (до 8 уровней)
- Graceful shutdown по SIGINT/SIGTERM
- REST API для программного управления
- Миграции базы данных
- Go 1.26.1 или выше
# Сборка
go build -o dnso .
# Применение миграций
./dnso migrate up
# Запуск сервера
./dnso serveПосле запуска:
- DNS-сервер —
127.0.0.1:5354(UDP) - Веб-интерфейс —
http://127.0.0.1:8080
dig @127.0.0.1 -p 5354 example.com
dig @127.0.0.1 -p 5354 google.comВсе параметры настраиваются через переменные окружения:
| Переменная | По умолчанию | Описание |
|---|---|---|
DNSO_DB_PATH |
./dnso.db |
Путь к файлу SQLite |
DNSO_BIND_ADDR |
:5354 |
Адрес DNS-сервера |
DNSO_UPSTREAM |
8.8.8.8:53 |
Вышестоящий DNS-сервер |
DNSO_CACHE |
true |
Включение кэширования |
DNSO_WEB_ADDR |
:8080 |
Адрес веб-интерфейса |
DNSO_MIGRATIONS_PATH |
file://migrations |
Путь к миграциям |
| Команда | Описание |
|---|---|
dnso serve |
Запуск DNS-сервера и веб-интерфейса |
dnso migrate up |
Применить миграции БД |
dnso migrate down |
Откатить миграции БД |
MIT — подробнее в файле LICENSE.