10 сентября 2024 30 сентября 2024 Linux DNS DNS сервер DNS протокол


Список опций

ssnn --help
Использовать так: ssnn [-hVv] [-p <port>] [--ttl=<ttl>] [-a <admin>]... [--zones=<zones>]... [TYPE=NAME=VALUE]...
Такие есть аргументы.

  -h, --help                показать подсказку и выйти
  -V, --version             показать версию и выйти
  -v, --verbose             расширенный вывод
  -p, --port=<port>         Номер порта (1024)
  --ttl=<ttl>               TTL (default: 600)
  -a, --admin=<admin>       Админ по умолчанию
  --zones=<zones>           Путь к директории зон (zones)
  TYPE=NAME=VALUE           Multiple records (e.g., A=test.ru=127.0.0.1)

Запустить на 53 порту можно только с root правами или в Docker контейнере с пробросом порта

sudo ./ssnn --port=53

Через опцию командной строки добавить две ресурсные A-записи для домена test.ru

./ssnn A=test.ru=127.0.0.1 A=test.ru=192.168.0.1

Поддерживаются следующие записи

Тип ресурсной записи Структура значения
A список IP адресов, по одной на каждую строку
MX число адрес-сервера
CNAME строка
HINFO список строк ключ;значение
SOA строка емейла администратора зоны
TXT список строк длиной до 255 символов
URI число число урл

Так же опциями запуска можно изменить значение по умолчанию для параметра TTL и емейл администратора всех зон

Настройки зоны можно сохранить в виде иерархии директорий и файлов, представленной в виде:

[D:путь к настройкам]/[D:название ресурсной записи]/[D:ТИП РЕСУРСНОЙ ЗАПИСИ/[F:значение ресурсной записи]

Директория ресурсных записей

По умолчанию настройки должны размещаться в директории zones либо можно изменить с помощью опции --zones=/etc/ssnn/zones/

После запуска программа анализирует опции запуска и формирует группу хешь-таблиц ресурсных запией,

затем загружаются данные из директории ZONES (при этом замещая ранее определённые записи)

затем сервер переходит в режим обслуживания неблокируемых UDP соединений с DNS клиентами

для внесения изменений в настройки ресурсных записей необходимо изменить данные в хранилища --zones и перезапустить сервер

либо можно отправить серверу сигнал SIGHUP, после получения сигнала сервер заново загружает все данные из хранилища --zones

pkill -q ssnn

По-умолчанию, сервер для каждого домена, после каждой переконфигурации, вычисляет значение SERIAL на основе текущей даты и времени, изменить это поведение можно с помощью создания и редактирования значения в файле SERIAL

echo $(awk '{print $1+1}' < zzz/example.com/SERIAL ) > zzz/example.com/SERIAL
cat zzz/example.com/SERIAL
4

killall -1 ssnn 

nslookup -querytype=SOA -port=1025 example.com 127.0.0.1
Server:		127.0.0.1
Address:	127.0.0.1#1025

example.com
	origin = example.com
	mail addr = ff.ya.ru
	serial = 4
	refresh = 600
	retry = 6000
	expire = 6000
	minimum = 600