アップデート一覧に戻る
New releaseAug 19, 2026

dnscontrol v5.0.0-rc9

DNSのためのインフラストラクチャ・アズ・コード!

共有

DNSControl

DNSControl/dnscontrol/build Google Group PkgGoDev

DNSControl は DNS のための Infrastructure as Code です。 JavaScript 互換のフル機能の設定言語に加え、AWS Route 53、Cloudflare、Gandi などの DNS プロバイダー API と通信する「プラグイン」を備えています。同じ DNS レコードを 複数のプロバイダーに送信できます。Go が動作する環境(Linux、macOS、Windows)であれば どこでも動作します。プロバイダーモデルは拡張可能であるため、さらに多くの プロバイダーを追加できます。

例

dnsconfig.js:

// define our registrar and providers
var REG_NAMECOM = NewRegistrar("ndc_main");
var DSP_ROUTE53 = NewDnsProvider("r53_main");

D("example.com", REG_NAMECOM, DnsProvider(DSP_ROUTE53),
  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

はじめに

最も手早く始める方法は dnscontrol init です。対話形式のウィザードが DNS プロバイダーとレジストラを尋ね、認証情報を検証し、ゾーンに既に存在するレコードを含めて動作する creds.json と dnsconfig.js を書き出します。

完全な手順については、ドキュメントサイトの Getting Started ページを参照してください。

DNS データを完全に「GitOps」で管理したいですか? スターターリポジトリ dns-config をクローンして始めましょう!

対応プロバイダー

DNSControl は 68 の DNS プロバイダーとレジストラをサポートしています:

AdGuard HomeAkamai Edge DNSAlibaba Cloud DNSAutoDNSAWS Route 53¹
AXFR+DDNSAzure DNSAzure Private DNSBINDBunny DNS
CentralNic Reseller¹CloudflareClouDNSCSC Global¹deSEC
DigitalOceanDNS Made EasyDNSOVERHTTPS²DNScaleDNSimple¹
DomainnameshopDynadot²easyname²ExoscaleFortigate
Gandi¹GcoreGidinet¹Google DNSHetzner
hosting.de¹Huawei Cloud DNSHurricane Electric DNSInfomaniakInternet.bs²
INWX¹JokerLinodeLoopia¹LuaDNS
Windows Server DNSMikroTik RouterOSMythic BeastsName.com¹Namecheap¹
NetcupNetlifyNetnodNexDNSNS1
OpenproviderOpenSRS²Oracle CloudOVH¹Packetframe
Porkbun¹PowerDNSRealtime Register¹RWTH DNS-AdminSakura Cloud
SoftLayerTencent Cloud DNS¹TransIPUniFi NetworkVercel
VultrNetbirdWebSupportSpaceship¹mittwald

¹レジストラ機能もサポート ²レジストラのみ

利点

  • BIND ゾーンファイルを編集するよりもエラーが起きにくい。
  • Web ポータルでボタンをクリックするよりも再現性が高い。
  • DNS プロバイダー間の切り替えが簡単: DNSControl 言語は ベンダー非依存です。これを DNS ゾーンレコードの維持に使用すれば、 DNS プロバイダー間を簡単に切り替えられます。実際、DNSControl は DNS レコードを複数のプロバイダーにアップロードするため、 一方でテストしながら他方へ切り替えることができます。私たちは 3 年間で 3 回プロバイダーを切り替えましたが、DNS レコードを 失ったことは一度もありません。
  • DNS に CI/CD の原則を適用! 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) 経由

公式の GitHub Action は github.com/dnscontrol/dnscontrol-action です。

他にも以下のようなものが作成されています:

非推奨の警告(2026-08-17 更新)

カテゴリ