
dnscontrol v5.0.0-rc9
DNSのためのインフラストラクチャ・アズ・コード!
DNSControl
DNSControl は DNS のための Infrastructure as Code です。 AWS Route 53、Cloudflare、Gandi などの DNS プロバイダ API と通信する「プラグイン」に加え、 本格的な設定言語(JavaScript 互換)を備えています。同じ 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、DNS ホストとして Route 53)と通信し、必要な変更を決定します。
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 コンパイラと考えることができます。設定ファイルは JavaScript によく似た DSL で記述され、中間表現(IR)にコンパイルされます。コンパイラのバックエンドは IR を使用して、Route53、Cloudflare、Gandi などのサービスや BIND などのシステム上の DNS ゾーンを更新します。
利点
- BIND ゾーンファイルを編集するよりも エラーが発生しにくい。
- Web ポータルでボタンをクリックするよりも 再現性が高い。
- DNS プロバイダ間の切り替えが簡単: DNSControl 言語はベンダーに依存しません。DNS ゾーンレコードの管理にこれを使用すれば、DNS プロバイダ間の切り替えを簡単に行えます。実際、DNSControl は DNS レコードを複数のプロバイダにアップロードするため、別のプロバイダに切り替えながら一方をテストできます。私たちは 3 年間で 3 回プロバイダを切り替えましたが、DNS レコードを失ったことは一度もありません。
- CI/CD の原則を DNS に適用! StackOverflow は DNSControl の設定を Git で管理し、CI システムを使用して変更を展開しています。DNS 情報を VCS で管理することで、完全な履歴を保持できます。CI を使用することで、ユニットテストとシステムテストを含めることができます。MX レコードの末尾に「.」を付け忘れたことはありませんか? 私たちは、Tom がそのミスを繰り返さないようにするテストを追加して以来、その問題は発生していません。
- (GitOps) PR ベースの更新を採用。 開発者が更新を PR として送信し、承認前にレビューできます。
- 変数で時間を節約! IP アドレスを定数に割り当て、ファイル全体で変数名を使用します。IP アドレスをグローバルに変更する必要がありますか? 変数を変更して「再コンパイル」するだけです。
- マクロ! SPF レコード、MX レコード、その他の繰り返し使用するデータを一度定義すれば、すべてのドメインで再利用できます。
- 単一の情報源から Cloudflare を制御。 DNSControl ファイルから直接、Cloudflare のプロキシ(「オレンジの雲」ボタン)を有効/無効にできます。
- 変換などの機能で類似ドメインを同期。 あるドメインが別のドメインのフィルタリング版である場合も、簡単に設定できます。
- 拡張可能! すべての DNS プロバイダはプラグインとして記述されています。新しいプラグインの作成は非常に簡単です。
インストール
DNSControl は、macOS、Linux、Windows 用のパッケージ、またはソースコードからインストールできます。公式インストール手順 を参照してください。
GitHub Actions (GHA) を使用する場合
dnscontrol-action または gacts/install-dnscontrol を参照してください。
非推奨警告(2025-11-21 更新)
- REV() は v5.0 で RFC2317 から RFC4183 に切り替わります。 これは破壊的な変更です。設定に影響がある場合は警告が出力されます。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