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

 


21 апреля 2023 22 августа 2023 Linux bind dnssec


export DOMAINNAME=breys.ru

cd /var/cache/bind

dnssec-keygen -L 3600 -a RSASHA256 -b 2048  $DOMAINNAME
dnssec-keygen -L 3600 -f KSK -a RSASHA256 -b 4096 $DOMAINNAME

for key in `ls K$DOMAINNAME*.key`; do 
    echo "\$INCLUDE $key"  /etc/bind/zones/$DOMAINNAME.conf ; 
done

salt=$(head -c 1000 /dev/urandom | sha1sum | cut -b 1-16)

dnssec-signzone -A -3 $salt -N INCREMENT -o $DOMAINNAME -t /etc/bind/zones/$DOMAINNAME.conf

В результате подписанный файл зоны будет в файле /etc/bind/zones/$DOMAINNAME.conf

этот файл необходимо указать в настройках зоны и перезапустить bind9

zone "breys.ru" {
    type master;
//    file "/etc/bind/zones/breys.ru.conf";
    file "/etc/bind/zones/breys.ru.conf.signed";
};

При этом утилита dnssec-signzone подписывает каждую запись зоны /etc/bind/zones/$DOMAINNAME.conf

в который мы добавили созданные ключи через $INCLUDE

Ключи должны находиться в /var/cache/bind

В дальнейшем с зоной необходимо работать по такой схеме

  • изменения вносят в оригинальный файл зоны /etc/bind/zones/breys.ru.conf
  • подписывают изменённый файл зоны ключами:
    dnssec-signzone -A -3 $salt -N INCREMENT -o $DOMAINNAME -t /etc/bind/zones/$DOMAINNAME.conf
  • перезапускают bind9

 


28 сентября 2018 17 марта 2022 Nginx CNAME тип A wildcard dns-алиасы


Не все знают зачем к имени сайта добавляют префикс www., по мимо субъективных причин, про world wide web и удобство парсинга урлов есть совершенно объективная причина использовать алиас WWW.

Всё дело в структуре протокола DNS, когда происходит преобразование доменного имени обычного домена первого уровня, то происходит запрос к корневому серверу зоны, а корневые сервера зон обновляются достаточно редко, например в зоне .RU обновление происходит 4 раза в день, а при преобразовании домена третьего уровня, про выполняется запрос к DNS серверу контролирующему домен, а он обновляется быстрее чем корневые сервера зоны.

Таким образом, если у вас отключили сервер сайта, и вы меняете IP адрес парковки домена на IP адрес резервного, то вашим клиентам придётся ждать обновления корневого DNS, а если меняется IP адрес у алиаса WWW.yourdomain то обновление произойдёт гораздо быстрее, в некоторых случаях сразу

UDP: типа записи для алиаса www лучше указывать как A, потому что тип CNAME требует дополнительного DNS запроса для получения IP адреса


03 января 2018 04 января 2018 Linux DNS CNAME host


Когда Яндекс.домены просят подтвердить домен с помощью CNAME записи то этот поддомен прописывается в панели управления доменом у хостера, а затем проверяется с помощью следующей команды

host -t CNAME python.breys.ru ns1.firstvds.ru
Using domain server:
Name: ns1.firstvds.ru
Address: 82.146.43.2#53
Aliases: 

python.breys.ru has no CNAME record

в выхлопе команды будет видно является ли запись типа CNAME, в данном случае не является, в от этот поддомен является CNAME на breys.ru

host -t CNAME static.python.breys.ru ns1.firstvds.ru
Using domain server:
Name: ns1.firstvds.ru
Address: 82.146.43.2#53
Aliases: 

static.python.breys.ru is an alias for breys.ru.

Для проверки MX записи можно воспользоваться вот такой командой

host -t MX breys.ru
breys.ru mail is handled by 20 mail.breys.ru.
breys.ru mail is handled by 10 mail.breys.ru.


host -t MX python.breys.ru
python.breys.ru has no MX recor

Внимательный глаз сразу заметит что можно указывать внешний NS сервер для проверки записи, это необходимо чтобы не дожидаться обновления зоны на локальном DNS сервере и у провайдера.