
dnscontrol v5.0.0-rc9
DNS를 위한 코드형 인프라!
DNSControl
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("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 영역 파일을 편집하는 것보다.
- 재현성이 높음 웹 포털에서 버튼을 클릭하는 것보다.
- 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)를 통한 사용
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