Интеграция с ISPmanager
NexDNS обеспечивает полную совместимость с API DNSmanager, поэтому вы можете подключить NexDNS к ISPmanager как вторичный DNS-сервер. ISPmanager остаётся первичным сервером и, после того как вы разрешите передачу зоны (AXFR) с IP-адреса источника NexDNS, передаёт каждую зону в NexDNS, поэтому управление записями по-прежнему ведётся в ISPmanager. Полный API DNSmanager для доменов и записей также доступен для прямого использования через единую точку совместимости.
Точка подключения
Все вызовы совместимого API направляются через единую точку:
https://api.nexdns.ru/dnsmgr
Аутентификация
Совместимый API использует для аутентификации отдельный логин и секрет интеграции, которые вы создаёте в NexDNS в разделе Аккаунт → Интеграции (а не пароль вашей учётной записи). ISPmanager передаёт их с каждым запросом; вы также можете открыть сессию вручную с помощью функции func=auth и повторно использовать полученный токен.
curl -X POST "https://api.nexdns.ru/dnsmgr?func=auth" \
-d "username=your_integration_login" \
-d "password=your_integration_secret"
Успешный ответ (XML):
<doc><auth id="SESSION_ID"/></doc>
Для получения ответа в формате JSON добавьте out=json к любому запросу. Повторные неудачные попытки входа временно ограничиваются.
Поддерживаемые функции
Совместимый API выполняет операции на основе параметра запроса func:
| Функция | Описание |
|---|---|
auth |
Открытие сессии по логину и секрету интеграции |
domain |
Список всех доменов авторизованной учётной записи |
domain.edit |
Создание или обновление домена (с sok=ok); когда ISPmanager передаёт IP своего первичного сервера, NexDNS создаёт вторичную зону, которая передаётся с ISPmanager. Без sok возвращается информация о домене |
domain.delete |
Удаление домена (передайте elid=domain.name) |
domain.refresh |
Принудительная немедленная повторная передача вторичной зоны с ISPmanager (передайте elid=domain.name). ISPmanager вызывает её после изменения записей |
domain.record |
Список записей домена (передайте elid=domain.name) |
domain.record.edit |
Создание или обновление записи (с sok=ok) |
domain.record.delete |
Удаление записи (передайте elid и rkey) |
dnsparam |
Получение конфигурации серверов имён для вашего аккаунта |
slaveserver |
Список серверов имён, назначенных вашим зонам |
Подключение ISPmanager к NexDNS
Чтобы подключить ISPmanager к NexDNS:
- Зарегистрируйте аккаунт NexDNS на nexdns.ru и выберите тариф, включающий интеграцию с ISPmanager и вторичный DNS.
- Настройте интеграцию в NexDNS: откройте Аккаунт → Интеграции, нажмите «Создать секрет», затем включите доступ для ISPmanager (по умолчанию выключен). Этот канал обходит двухфакторную аутентификацию, поэтому при желании привяжите его к фиксированному IP-адресу.
- В ISPmanager добавьте NexDNS как вторичный DNS-сервер для ваших доменов (Доменные имена → вторичные серверы имён).
-
Введите параметры подключения:
- Адрес:
https://api.nexdns.ru/dnsmgr - Логин: ваш логин интеграции из раздела Аккаунт → Интеграции
- Секрет: ваш секрет интеграции
- Адрес:
- Разрешите передачу зоны (AXFR): на первичном DNS-сервере разрешите передачу зоны с IP-адреса источника NexDNS, указанного в разделе Аккаунт → Интеграции. Без этого ISPmanager создаёт вторичную зону, но она остаётся пустой.
ISPmanager остаётся первичным сервером, и вы продолжаете управлять записями в нём; NexDNS забирает каждую зону как вторичную по AXFR. Разовый шаг с вашей стороны: на первичном DNS-сервере разрешите зонную передачу (AXFR) с IP-адреса источника NexDNS, указанного в разделе «Аккаунт → Интеграции», иначе зоны останутся пустыми. Аутентификация использует логин и секрет интеграции из раздела «Аккаунт → Интеграции»; убедитесь, что доступ ISPmanager включён и ваш тариф включает вторичный DNS.
Параметры записей
При создании или обновлении записей через domain.record.edit используются следующие параметры в зависимости от типа записи:
| Тип | Параметры |
|---|---|
A / AAAA |
name, ip (or value), ttl |
CNAME / NS / PTR |
name, value, ttl |
MX |
name, value, priority, ttl |
SRV |
name, value, priority, weight, port, ttl |
TXT |
name, value, ttl |
CAA |
name, caa_value (or value), flag, tag, ttl |
Для обновления передайте rkey с ID существующей записи. Опустите rkey (или передайте пустое значение) для создания новой записи.
Формат вывода
По умолчанию все ответы возвращаются в формате XML. Добавьте out=json к любому запросу для получения ответов в формате JSON.
Управление API-ключами
API-ключи используются для аутентификации запросов к REST API NexDNS. Каждый ключ имеет набор разрешений и может иметь дату истечения срока действия.
Создание API-ключа
Создать API-ключ можно двумя способами:
- Панель управления: перейдите в Настройки > API-ключи и нажмите «Создать API-ключ»
- REST API:
POST /v1/account/api-keys(требуется существующий API-ключ)
Формат ключа
API-ключи имеют формат nxd_, за которым следуют 40 случайных буквенно-цифровых символов. Полный ключ показывается только один раз при создании. NexDNS хранит только хешированную форму ключа, поэтому при утере восстановить его невозможно.
nxd_aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789abcd
Разрешения
Каждому API-ключу необходимо назначить хотя бы одно разрешение. Доступные разрешения:
| Разрешение | Предоставляет доступ к |
|---|---|
zones.read |
Список зон, просмотр деталей зон, экспорт зон, просмотр статуса DNSSEC |
zones.write |
Создание зон, удаление зон, включение/отключение DNSSEC |
records.read |
Список записей, просмотр отдельных записей |
records.write |
Создание, обновление и удаление записей |
webhooks.read |
Список и просмотр вебхуков |
webhooks.write |
Создание, обновление и удаление вебхуков |
Мы рекомендуем предоставлять каждому ключу только необходимые ему разрешения.
Срок действия
API-ключи могут иметь дату истечения срока действия. При установке ключ перестанет работать после указанной даты (проверка в полночь UTC). Просроченные ключи возвращают ответ 401 Unauthorized.
Отзыв ключа
Вы можете отозвать любой API-ключ в любое время через страницу настроек или через API. Отзыв немедленный и необратимый – ключ удаляется, а не отключается.
curl -X DELETE "https://api.nexdns.ru/v1/account/api-keys/{id}" \
-H "Authorization: Bearer nxd_your_api_key"
Требования к тарифу
Доступ к API требует тарифного плана с функцией api_access.
Ограничение запросов
API NexDNS применяет ограничения запросов для обеспечения справедливого использования и стабильности сервиса. Ограничения применяются к аккаунту пользователя (не к API-ключу), поэтому использование нескольких API-ключей не увеличивает лимит.
Лимиты
| Область | Лимит | Окно | Политика |
|---|---|---|---|
| API-запросы | 60 |
1 минута | Скользящее окно |
Неаутентифицированные запросы (или запросы с недействительными ключами) ограничиваются по IP-адресу.
Заголовки ограничения запросов
Каждый ответ API содержит заголовки, указывающие текущий статус ограничения запросов:
| Заголовок | Описание |
|---|---|
X-RateLimit-Limit |
Максимальное количество запросов, допустимое в окне |
X-RateLimit-Remaining |
Количество оставшихся запросов в текущем окне |
X-RateLimit-Reset |
Временная метка Unix сброса окна ограничения |
Retry-After |
Секунды ожидания перед повторной попыткой (только в ответах 429) |
Превышение лимита
При превышении лимита API возвращает 429 Too Many Requests:
{
"status": "error",
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests. Please retry after {timestamp}."
}
}