--- layout: default title: DNSControl ---

# DNSControl

DNSControl is an opinionated platform for seamlessly managing your DNS configuration across any number of DNS hosts, both in the cloud or in your own infrastructure. It manages all of the domains for the Stack Overflow network, and can do the same for you!

### Try It

Want to jump right in? Follow our quick start tutorial on a new domain or migrate an existing one. Read the language spec for more info. You can also view a list of all topics.

### Use It

Take advantage of the advanced features. Use macros and variables for easier updates. Upload your zones to multiple DNS providers.

### Get Involved

Join our mailing list. We make it easy to contribute by using GitHub, you can make code changes with confidence thanks to extensive integration tests. The project is newbie-friendly so jump right in!

## Features

{% include feature.html text="Maintain your DNS data as a high-level DS, with macros, and variables for easier updates." img="biology.svg" %} {% include feature.html text="Super extensible! Plug-in architecture makes adding new DNS providers and Registrars easy!" img="light-bulb.svg" %} {% include feature.html text="Eliminate vendor lock-in. Switch DNS providers easily, any time, with full fidelity." img="group.svg" %} {% include feature.html text="Reduce points of failure: Easily maintain dual DNS providers and easily drop one that is down." img="layers.svg" %} {% include feature.html text="Supports 10+ DNS Providers including BIND, AWS Route 53, Google DNS, and name.com" img="cancel.svg" %} {% include feature.html text="Apply CI/CD principles to DNS: Unit-tests, system-tests, automated deployment." img="share.svg" %} {% include feature.html text="All the benefits of Git (or any VCS) for your DNS zone data. View history. Accept PRs." img="document.svg" %} {% include feature.html text="Optimize DNS with SPF optimizer. Detect too many lookups. Flatten includes." img="mail.svg" %} {% include feature.html text="Runs on Linux, Windows, Mac, or any operating system supported by Go." img="speech-bubble.svg" %} {% include feature.html text="Enable/disable Cloudflare proxying (the \"orange cloud\" button) directly from your DNSControl files." img="cloud-computing.svg" %} {% include feature.html text="Assign an IP address to a constant and use the variable name throughout the configuration. Need to change the IP address globally? Just change the variable and \"recompile.\"" img="compass.svg" %} {% include feature.html text="Keep similar domains in sync with transforms, macros, and variables." img="attachment.svg" %}

## Getting Started

Information for new users and the curious.

- Getting Started: A walk-through of the basics
- Providers: Which DNS providers are supported
- Examples: The DNSControl language by example
- Migrating: Migrating zones to DNSControl

## Reference

Language resources and procedures.

- Language Reference: Full language description
- Aliases: ALIAS/ANAME records
- SPF Optimizer: Optimize your SPF records
- CAA Builder: Build CAA records the easy way
- Let's Encrypt: Renew your SSL/TLS certs

## Advanced Topics

Take advantage of DNSControl's unique features.

- Why CNAME/MX/NS targets require a "trailing dot"
- Testing: Unit Testing for you DNS Data
- Notifications: Be alerted when your domains are changed

## Developer Info

It is easy to add features and new providers to DNSControl. The code is very modular and easy to modify. There are extensive integration tests that make it easy to boldly make changes with confidence that you'll know if anything is broken. Our mailing list is friendly. Afraid to make your first PR? We'll gladly mentor you through the process. Many major code contributions have come from first-time Go users!

- Github: https://github.com/StackExchange/dnscontrol
- Mailing list: dnscontrol-discuss: The friendly best place to ask questions and propose new features
- Step-by-Step Guide: Writing Providers: How to write a DNS or Registrar Provider
- Step-by-Step Guide: Adding new DNS rtypes: How to add a new DNS record type
- Release Engineering: How to build and ship a release
- Bug Triage: How bugs are triaged

Icons made by Freepik from www.flaticon.com