DNSmanager. Работа с API
Введение
В работе с инфраструктурой часто возникает необходимость автоматизации DNS-записей.
Пользователи регулярно используют API для:
- автоматического выпуска SSL-сертификатов (включая DNS-01 challenge для Let's Encrypt)
- настройки балансировщиков нагрузки
- управления поддоменами и сервисами
Для этих задач в панели DNSmanager реализован полноценный HTTP API, позволяющий управлять DNS-записями программно.
Инструкция
Получение реквизитов
Для работы с API необходимо сначала подключить услугу DNS-хостинг (если она ещё не активирована).
Услуга доступна для заказа, если у Вас есть активные сервера или находится у нас домен.
После создания услуги выберите ее и нажмите сверху кнопку Изменить. Откроется окно, где Вы сможете найти логин и пароль от DNSmanager.
Описание команд
В командах используются реквизиты LOGIN:PASSWORD и домен tex-lab.ru. Вам надо заменить их на свои.
Далее разберем команды для добавления, редактирования и удаления записей.
Создание TXT записи:
https://dns1.planetahost.ru/dnsmgr?func=domain.record.edit&authinfo=LOGIN:PASSWORD&out=json&plid=tex-lab.ru&name=_acme-challenge&rtype=txt&value=hello&sok=ok
Параметры:
- plid - домен (зона)
- name - имя записи
- rtype - тип записи (TXT, A, CNAME и т.д.)
- value - значение записи
Получение списка записей
https://dns1.planetahost.ru/dnsmgr?authinfo=LOGIN:PASSWORD&out=json&func=domain.record&elid=tex-lab.ru
Используется для:
- получения всех DNS записей зоны
- получения rkey для удаления
Удаление DNS записи
https://dns1.planetahost.ru/dnsmgr?func=domain.record.delete&authinfo=LOGIN:PASSWORD&out=json&plid=tex-lab.ru&elid=_acme-challenge.tex-lab.ru.%20TXT%20%20hello&sok=ok
Важно: elid - это идентификатор записи (rkey) включает имя, тип и значение. Его мы получили выше.
Обновление DNS записи
https://dns1.planetahost.ru/dnsmgr?func=domain.record.edit&authinfo=LOGIN:PASSWORD&out=json&plid=tex-lab.ru&elid=_acme-challenge.tex-lab.ru.%20TXT%20%20hello&value=NEW_TOKEN&sok=ok
Особенность:
- обновление работает через тот же elid
- позволяет менять значение записи без удаления
Практический пример
На базе этого API можно полностью автоматизировать выпуск SSL-сертификатов через DNS-01 challenge.
Для этого используется готовый интеграционный скрипт для acme.sh.
Установка ACME
curl https://get.acme.sh | sh -s email=you@example.com
Поменяйте email на свой
Перезагрузка shell (важно)
source ~/.bashrc
Проверка установки
acme.sh --version
Создайте скрипт в каталоге DNS-плагинов:
nano ~/.acme.sh/dnsapi/dns_dnsmanager.sh
Код скрипта:
#!/usr/bin/env bash
API="https://dns1.planetahost.ru/dnsmgr"
AUTH="LOGIN:PASSWORD"
DOMAIN="tex-lab.ru"
log() {
echo "[DNSmanager] $1"
}
urlencode() {
python3 - <<EOF
import urllib.parse
print(urllib.parse.quote("$1"))
EOF
}
# =========================
# Добавление записей (ACME)
# =========================
dns_dnsmanager_add() {
fulldomain=$1
txtvalue=$2
log "Добавляем TXT для LE: $fulldomain -> $txtvalue"
curl -s -k \
"$API?func=domain.record.edit&authinfo=$AUTH&out=json&plid=$DOMAIN&name=_acme-challenge&rtype=txt&value=$txtvalue&sok=ok" \
>/dev/null 2>&1
if [ $? -ne 0 ]; then
log "ERROR: не удалось добавить TXT запись"
return 1
fi
log "TXT запись добавлена"
}
# =========================
# Удаление записей (ACME)
# =========================
dns_dnsmanager_rm() {
fulldomain=$1
txtvalue=$2
log "Удаляем TXT после проверки LE: $txtvalue"
RKEY="_acme-challenge.$DOMAIN. TXT $txtvalue"
RKEY_URL=$(urlencode "$RKEY")
curl -s -k \
"$API?func=domain.record.delete&authinfo=$AUTH&out=json&plid=$DOMAIN&elid=$RKEY_URL&sok=ok" \
>/dev/null 2>&1
if [ $? -ne 0 ]; then
log "ERROR: не удалось удалить TXT запись"
return 1
fi
log "TXT запись удалена"
}
Сделать скрипт исполняемым:
chmod +x ~/.acme.sh/dnsapi/dns_dnsmanager.sh
Запускаем ACME с нашим скриптом:
acme.sh --issue -d tex-lab.ru -d '*.tex-lab.ru' --dns dns_dnsmanager
Скрипт отработает и выпустит сертификат:
Далее его можно скачать и использовать.
Заключение
В рамках данной инструкции был рассмотрен способ управления DNS-зоной через API, позволяющий автоматизировать ключевые инфраструктурные задачи: выпуск SSL-сертификатов (включая DNS-01 проверку для Let's Encrypt), управление записями домена и интеграцию с внешними системами автоматизации.
Наш DNS работает на решениях от ISP, если Вы не нашли ответ на свой вопрос по API, то можете заглянуть к ним:




