Назад к обновлениям
New releaseAug 19, 2026

dnscontrol v5.0.0-rc9

Инфраструктура как код для DNS!

Поделиться

DNSControl

DNSControl/dnscontrol/build Google Group PkgGoDev

DNSControl — это инфраструктура как код (Infrastructure as Code) для DNS. Он включает полнофункциональный язык конфигурации (совместимый с JavaScript), а также «плагины», которые взаимодействуют с API DNS-провайдеров, таких как AWS Route 53, Cloudflare и Gandi. Он может отправлять одни и те же DNS-записи нескольким провайдерам. Он работает везде, где работает Go (Linux, macOS, Windows). Модель провайдеров расширяема, поэтому можно добавлять новых провайдеров.

Пример

dnsconfig.js:

// define our registrar and providers
var REG_NAMECOM = NewRegistrar("name.com");
var r53 = NewDnsProvider("r53")

D("example.com", REG_NAMECOM, DnsProvider(r53),
  A("@", "1.2.3.4"),
  CNAME("www","@"),
  MX("@",5,"mail.myserver.com."),
  A("test", "5.6.7.8")
)

Запуск dnscontrol preview свяжется с провайдерами (здесь name.com как регистратор и Route 53 как DNS-хост) и определит, какие изменения необходимо внести.

Запуск dnscontrol push внесёт эти изменения через провайдера, и мои DNS-записи будут корректно обновлены.

Самый простой способ запустить DNSControl — использовать Docker-контейнер:

docker run --rm -it -v "$(pwd):/dns"  ghcr.io/dnscontrol/dnscontrol preview

Чтобы начать работу, посетите страницу Getting Started на сайте документации!

Поддерживаемые провайдеры

DNSControl поддерживает 65 DNS-провайдеров и регистраторов:

¹также поддерживает функции регистратора ²только регистратор

Stack Overflow использует эту систему для управления сотнями доменов и поддоменов у множества регистраторов и DNS-провайдеров.

Вы можете рассматривать его как DNS-компилятор. Файлы конфигурации написаны на DSL, который очень похож на JavaScript. Они компилируются в промежуточное представление (IR). Бэкенды компилятора используют IR для обновления ваших DNS-зон в таких сервисах, как Route53, Cloudflare и Gandi, или в таких системах, как BIND.

Преимущества

  • Меньше ошибок по сравнению с редактированием файла зоны BIND.
  • Более воспроизводимо, чем кликать по кнопкам на веб-портале.
  • Лёгкая смена DNS-провайдеров: язык DNSControl не привязан к вендору. Если вы используете его для ведения записей вашей DNS-зоны, вы можете легко переключаться между DNS-провайдерами. Более того, DNSControl загрузит ваши DNS-записи сразу нескольким провайдерам — это значит, что вы можете тестировать одного, переключаясь на другого. Мы меняли провайдеров 3 раза за три года и ни разу не потеряли ни одной DNS-записи.
  • Применяйте принципы CI/CD к DNS! StackOverflow хранит свои конфигурации DNSControl в Git и использует нашу систему CI для развёртывания изменений. Хранение DNS-данных в VCS означает, что у нас есть полная история. Использование CI позволяет нам включать модульные и системные тесты. Помните, как вы забыли поставить «.» в конце MX-записи? У нас не было этой проблемы с тех пор, как мы добавили тест, который гарантирует, что Том не повторит эту ошибку... снова.
  • Применяйте обновления на основе PR (GitOps). Позволяйте разработчикам отправлять обновления в виде PR, которые вы можете просмотреть перед утверждением.
  • Переменные экономят время! Присвойте IP-адрес константе и используйте имя переменной по всему файлу. Нужно изменить IP-адрес глобально? Просто измените переменную и «перекомпилируйте».
  • Макросы! Определите SPF-записи, MX-записи или другие повторяющиеся данные один раз и переиспользуйте их для всех доменов.
  • Управляйте Cloudflare из единого источника истины. Включайте/отключайте проксирование Cloudflare (кнопка «оранжевое облако») прямо из ваших файлов DNSControl.
  • Держите похожие домены в синхронизации с помощью трансформаций и других функций. Если один домен должен быть отфильтрованной версией другого, это легко настроить.
  • Он расширяемый! Все DNS-провайдеры написаны в виде плагинов. Писать новые плагины очень легко.

Установка

DNSControl можно установить с помощью пакетов для macOS, Linux и Windows или из исходного кода. Смотрите официальные инструкции.

Через GitHub Actions (GHA)

Смотрите dnscontrol-action или gacts/install-dnscontrol.

Предупреждения об устаревании (обновлено 2025-11-21)

  • REV() переключится с RFC2317 на RFC4183 в v5.0. Это критическое изменение. Если ваша конфигурация затронута, выводятся предупреждения. Дата выхода v5.0 пока не объявлена. См. https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
  • NAMEDOTCOM, OPENSRS и SOFTLAYER нужны мейнтейнеры! У этих провайдеров нет мейнтейнера. Мейнтейнеры своевременно отвечают на PR и исправляют ошибки, а также стараются отслеживать изменения протоколов. Хотите стать героем и взять их на сопровождение? Свяжитесь с tal at what exit dot org.

Вклад в проект

Хотите внести вклад? Исправление ошибки, добавление нового DNS-провайдера или улучшение документации — любой вклад приветствуется. Смотрите CONTRIBUTING.md, чтобы узнать, с чего начать.

Подробнее на нашем сайте

Сайт: https://docs.dnscontrol.org/

Руководство по началу работы: https://docs.dnscontrol.org/getting-started/getting-started

Звёзды с течением времени

Stargazers over time

Категории