Гид по технологиям

Настройка tinydns

5 min read DNS Обновлено 23 Nov 2025
Настройка tinydns: пошаговое руководство
Настройка tinydns: пошаговое руководство

Для кого эта инструкция

Коротко: для системных администраторов и инженеров DevOps, которые настраивают tinydns (djbdns) для авторитетной зоны. Если вы управляете локальной сетью или небольшим публичным DNS, этот материал пригодится.

Основные понятия (в одну строку)

  • tinydns — компонент djbdns для авторитетного DNS-сервера; конфигурация хранится в текстовом файле data.
  • A-запись — сопоставление имени и IPv4-адреса.
  • NS — делегирование зоны на указанные серверы имён.
  • MX — почтовый обменник для домена.

Файлы и помощники

Все записи tinydns хранятся в файле /service/tinydns/root/data. Редактировать его можно вручную или с помощью вспомогательных скриптов, которые находятся в каталоге /service/tinydns/root, например add-ns, add-host, add-alias и т.д.

Важно: не меняйте путь к файлу в командах — примеры используют реальную структуру каталогов.

Практический пример: запись для example.com

Перейдите в каталог с helper-скриптами:

cd /service/tinydns/root

Делаем сервер 192.168.0.100 name server для домена example.com:

./add-ns example.com 192.168.0.100

Примечание: имя NS назначается автоматически скриптом add-ns по шаблону [a-z].ns.name, например a.ns.example.com. A-запись для a.ns.example.com создаётся автоматически вызовом add-ns.

Добавляем второй сервер 192.168.0.101 — это станет b.ns.example.com:

./add-ns example.com 192.168.0.101

Создаём A-записи для хостов, которые будут обслуживать example.com:

./add-host server1.example.com 192.168.0.100
./add-host server2.example.com 192.168.0.101

Если нужно привязать дополнительные имена к одному IP, используйте add-alias (add-host допускает один IP в одной записи):

./add-alias www.example.com 192.168.0.100
./add-alias example.com 192.168.0.100

Помещаем почтовый обменник для example.com на 192.168.0.100:

./add-mx example.com 192.168.0.100

Как и с NS, имя SMTP-сервера назначается автоматически шаблоном [a-z].mx.name (например a.mx.example.com). При этом нельзя задать приоритет (distance) у add-mx.

После внесения всех записей выполните:

make

чтобы изменения вступили в силу.

TXT и CNAME: правка вручную

Помощников для создания CNAME и TXT (например для SPF) в комплекте нет. Для этих записей откройте файл вручную:

vi /service/tinydns/root/data

Например, добавление SPF (в tinydns-формате) и CNAME может выглядеть так:

'example.com:v=spf1 a mx ~all:3600
Cftp.example.com:www.example.com

Совет: используйте SPF-генераторы (например http://old.openspf.org/wizard.html) — они показывают синтаксис для BIND и tinydns, что упрощает копирование.

Не забудьте снова выполнить:

make

после ручного изменения data.

Пример конечного файла data

cat /service/tinydns/root/data

Пример вывода (фрагмент):

.example.com:192.168.0.100:a:259200
.example.com:192.168.0.101:b:259200
=server1.example.com:192.168.0.100:86400
=server2.example.com:192.168.0.101:86400
+www.example.com:192.168.0.100:86400
+example.com:192.168.0.100:86400
@example.com:192.168.0.100:a::86400
'example.com:v=spf1 a mx ~all:3600
Cftp.example.com:www.example.com

Обратите внимание, что строки начинаются с символов ., =, +, @, ‘, C и т.д. — каждый символ соответствует типу записи. Подробное описание типов записей см. по ссылкам в разделе «Полезные ресурсы».

Альтернатива: всё записать вручную

Если вам нужна гибкость (например, указать собственные имена NS или MX: ns1.example.com, mail.example.com), просто отредактируйте файл data вручную:

cd /service/tinydns/root
vi data

Пример содержимого data, определяющего NS, MX и набор машин:

#define the authoritative nameserver
.example.com::ns1.example.com
#mail exchanger
@example.com::mail.example.com
#IP for machine1,2,3,4,5
=machine1.example.com:1.2.3.1
=machine2.example.com:1.2.3.2
=machine3.example.com:1.2.3.3
=machine4.example.com:1.2.3.4
=machine5.example.com:1.2.3.5
#machine5 is also known as ns1
+ns1.example.com:1.2.3.5
#machine1 is our mailserver
+mail.example.com:1.2.3.1
#and our webserver
+www.example.com:1.2.3.1

И снова:

make

Как проверять записи

Для тестирования используйте команду dig против вашего tinydns-сервера. Примеры:

dig @192.168.0.100 example.com

dig @192.168.0.100 ns example.com

dig @192.168.0.100 mx example.com

dig @192.168.0.100 txt example.com

dig @192.168.0.100 www.example.com

Если ответы не совпадают с ожиданиями, проверьте /service/tinydns/root/data и убедитесь, что вы запускали make.

Частые ошибки и случаи, когда это не сработает

  • Ошибка: забыли выполнить make после правки data → tinydns использует старую конфигурацию.
  • Забытая зона на внешнем регистраторе: вы настроили NS локально, но записи у регистратора указывают на другие NS.
  • Неверный SPF/TXT: синтаксические ошибки в строке TXT приведут к некорректной проверке почты.
  • Конфликт имён: add-host позволяет использовать IP только один раз; для дополнительных имён используйте add-alias.

Альтернативные подходы

  • Использовать BIND/PowerDNS, если нужна совместимость с широким набором инструментов и форматов.
  • Управлять DNS декларативно через систему конфигурации (Ansible/Terraform) и генерировать /service/tinydns/root/data шаблонами.
  • Для динамических записей рассмотреть Exim/DHCP-интеграцию с внешним API.

Рекомендации по безопасности и приватности

  • Не размещайте управление сервером tinydns на общедоступном интерфейсе без надёжной защиты.
  • Ограничьте доступ к каталогу /service/tinydns/root правами только администратора.
  • В TXT/SPF не включайте чувствительные данные.
  • Логи и конфигурации храните с ротацией и ограниченным доступом.

Фактбокс: ключевые команды

  • cd /service/tinydns/root — перейти в каталог конфигурации
  • ./add-ns — добавить NS (имя присваивается автоматически)
  • ./add-host — добавить A-запись
  • ./add-alias — добавить alias для уже использованного IP
  • ./add-mx — добавить MX (имя присваивается автоматически)
  • vi /service/tinydns/root/data — правка вручную
  • make — применить изменения
  • dig @ — тестировать ответы DNS

Мини-методология: как управлять tinydns в продакшне

  1. Разработайте шаблоны для /service/tinydns/root/data (через шаблонизатор конфигураций).
  2. Используйте систему контроля версий для файла data.
  3. Применяйте изменения через CI: проверка синтаксиса -> тесты dig в тестовом окружении -> make -> деплой.
  4. Документируйте соглашения об именовании (ns1/ns2 vs a.ns/b.ns).

Критерии приёмки

  • DNS отвечает корректными A/NS/MX/TXT-записями в тесте dig в течение ожидаемого TTL.
  • Файл data хранится в репозитории и изменения проходят ревью.
  • Права на каталог ограничены и задокументированы.

Роль‑ориентированный чеклист

  • Системный администратор: проверить права на /service/tinydns/root, запустить make, обеспечить бэкапы.
  • DevOps-инженер: автоматизировать генерацию data, добавить тесты dig в CI.
  • Оператор почтового сервера: проверить MX и SPF/TXT записи, убедиться в корректной доставке почты.

Краткий глоссарий (1 строка)

  • TTL — время жизни DNS-записи в секундах; влияет на кэширование.

Полезные ресурсы

Чтобы узнать больше о djbdns и tinydns, посетите:

Важно: документация по типам записей и формату data содержится в перечисленных ссылках.

Итог

Настройка tinydns сводится к корректному составлению /service/tinydns/root/data, использованию helper-скриптов для ускорения рутинных операций и обязательному выполнению make после изменений. Для сложных сценариев рекомендуются шаблоны и автоматизация через CI, а также регулярная проверка результата с помощью dig.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как быстро включить фонарик на Android
Android.

Как быстро включить фонарик на Android

Как делиться экраном в Discord — руководство
Руководство

Как делиться экраном в Discord — руководство

Установка Microsoft Teredo в Windows 10
Windows

Установка Microsoft Teredo в Windows 10

Красный индикатор CPU: причины и исправления
Аппаратное обеспечение

Красный индикатор CPU: причины и исправления

Исправить ошибку xapofx1_5.dll — руководство
Windows

Исправить ошибку xapofx1_5.dll — руководство

GPU scaling на AMD: как включить и устранить проблему
Руководства

GPU scaling на AMD: как включить и устранить проблему