Управление DNS-записями
Клиент elles-dns-cli предоставляет команды для управления DNS-записями: создание, обновление, удаление и запрос. Поддерживаются все основные типы записей: A, AAAA, CNAME, MX, NS, PTR, SRV, TXT. Для каждого типа доступны как обобщенные команды (RecordAdd, RecordUpdate, RecordDelete, RecordQuery), так и типизированные варианты (например, RecordAddA, RecordAddMX).
Команды для работы с DNS-записями
Список команд:
-
RecordAdd— добавить новую DNS-запись; -
RecordUpdate— изменить существующую DNS-запись; -
RecordDelete— удалить DNS-запись; -
RecordQuery— запросить DNS-записи по фильтрам; -
RecordBulk— выполнить до 100 операций в пакетном режиме.
Обязательные параметры для всех команд
| Параметр | Описание |
|---|---|
|
FQDN узла, для которого создается/изменяется запись (обязательно) |
|
Тип записи: A, AAAA, CNAME, MX, NS, PTR, SRV, TXT (обязательно для обобщенных команд) |
|
Значение записи в формате, принятом DNS (обязательно для |
RecordAdd — добавить DNS-запись
Создает новую DNS-запись.
Параметры:
| Параметр | Описание |
|---|---|
|
Тип записи: A, AAAA, CNAME, MX, NS, PTR, SRV, TXT (обязательно для |
|
Значение записи в формате DNS (обязательно) |
|
TTL в секундах (по умолчанию: |
|
Включить aging (по умолчанию: |
|
Включить open ACL (по умолчанию: |
|
Имя зоны (опционально; извлекается из |
|
Партиция: |
|
FQDN пользовательской партиции (обязательно при |
Примеры использования:
dnscli RecordAdd --name www.example.com --type A --data 192.168.1.10 --ttl 7200
dnscli RecordAdd --name mail.example.com --type MX --data "10 mail.example.com." --aging false
dnscli RecordAdd --name _ldap._tcp.example.com --type SRV --data "0 100 389 dc1.example.com." --zonename example.com
Особенности работы с определенными типами записей:
-
для SRV-записей значение
--dataдолжно включать приоритет, вес, порт и цель в формате:"priority weight port target"; -
для MX-записей значение
--dataдолжно содержать приоритет и FQDN сервера:"10 mail.example.com."(точка в конце обязательна); -
для CNAME-записей значение
--data— FQDN цели, без точки в конце (добавляется автоматически).
RecordUpdate — изменить DNS-запись
Изменяет существующую запись. Требует указания старого и нового значения.
Параметры:
| Параметр | Описание |
|---|---|
|
Тип записи (обязательно) |
|
Текущее значение записи (обязательно) |
|
Новое значение записи (обязательно) |
|
TTL в секундах (по умолчанию: |
|
Имя зоны (опционально; извлекается из |
|
Партиция: |
|
FQDN пользовательской партиции (обязательно при |
Примеры использования:
dnscli RecordUpdate --name www.example.com --type A --olddata 192.168.1.10 --newdata 192.168.1.11
dnscli RecordUpdate --name mail.example.com --type MX --olddata "10 old.mail.com." --newdata "5 new.mail.com." --ttl 3600
Особенности использования:
-
обновление возможно только если запись существует и совпадает по значению
--olddata; -
для SRV и MX — обновление по полному значению, включая приоритет/вес.
RecordDelete — удалить DNS-запись
Удаляет запись по точному совпадению типа и значения.
Параметры:
| Параметр | Описание |
|---|---|
|
Тип записи (обязательно) |
|
Точное значение записи для удаления (обязательно) |
|
Имя зоны (опционально; извлекается из |
|
Партиция: |
|
FQDN пользовательской партиции (обязательно при |
Примеры использования:
dnscli RecordDelete --name www.example.com --type A --data 192.168.1.10
dnscli RecordDelete --name _ldap._tcp.example.com --type SRV --data "0 100 389 dc1.example.com."
Особенности использования:
-
удаление требует точного совпадения
--data; для SRV/MX — полное значение; -
если запись найдена в нескольких партициях, удаление отклоняется без явного указания
--partition.
RecordQuery — получить DNS-записи
Запрашивает записи по фильтрам. Требуется как минимум один из параметров: --zonename, --name, --type, --data.
Параметры:
| Параметр | Описание |
|---|---|
|
Имя узла: FQDN, |
|
Тип записи: A, MX, SRV, TXT, ALL (по умолчанию) |
|
Значение записи для фильтрации (регулярное выражение поддерживается) |
|
Имя зоны (по умолчанию: |
|
Партиция: |
|
FQDN пользовательской партиции (обязательно при |
Примеры использования:
dnscli RecordQuery --zonename example.com --name www --type A
dnscli RecordQuery --zonename example.com --type MX
dnscli RecordQuery --name www.example.com --type A --data "192.*"
Особенности использования:
-
--zonename=*и--name=allвозвращают все записи во всех зонах, что может замедлить вывод результата; -
регулярные выражения в
--dataработают только для текстовых типов (TXT, SRV, MX).
RecordBulk — выполнить операции с DNS-записями в пакетном режиме
Выполняет до 100 операций (create/update/delete) за один HTTP-запрос. Предназначена для массового внесения изменений.
Формат входных данных (JSON):
{
"operations": [
{"op": "create", "name": "www", "type": "A", "rdata": "10.1.1.1", "ttl": 3600},
{"op": "update", "name": "mail", "type": "MX", "rdata": "10 old.", "newRdata": "20 new."},
{"op": "delete", "name": "stale", "type": "A", "rdata": "10.9.9.9"}
]
}
Обязательные поля для каждой операции:
| Операция | Обязательные поля |
|---|---|
|
|
|
|
|
|
Особенности указания полей:
-
ttl— опционально для всех операций (по умолчанию:3600); -
rdata— строка в формате DNS (как в--dataдляRecordAdd); -
newRdata— новое значение дляupdate(как в--newdata).
Примеры использования:
-
получение данных операций из файла:
dnscli RecordBulk --zonename example.com --file records.json -
получение данных операций из stdinn:
cat records.json |dnscli RecordBulk --zonename example.com
-
тестовый прогон:
dnscli RecordBulk --zonename example.com --file records.json --dry-run -
вывод результата в JSON:
dnscli RecordBulk --zonename example.com --file records.json --json
Коды ответа:
| Код | Значение |
|---|---|
|
Все операции успешны |
|
Частичный отказ или ошибка API (например, часть записей не создалась) |
|
Ошибка валидации CLI (неправильный JSON, отсутствует |
Особенности использования:
-
операции выполняются независимо: одна ошибка не прерывает остальные;
-
вывод в режиме
--jsonсодержит статус каждой операции; -
флаг
--dry-runпоказывает план без применения изменений; -
флаг
--zonenameобязателен — автоопределение не работает в bulk-режиме; -
не поддерживаются параметры
--aging,--openacl, так как они применяются только при создании черезRecordAdd.
Обновлено: