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