
dnscontrol v4.43.2
Инфраструктура как код для DNS!
DNSControl
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