他們的解法是設計出一套 DSL (Domain Specific Language),然後從 DSL 轉出各 DNS 商的格式:「Introducing DnsControl – “DNS as Code” has Arrived」。
以 stackoverflow.com
來說,可以看到有同時使用 AWS 的 Route 53 與 Google 的 Cloud DNS:
;; ANSWER SECTION:
stackoverflow.com. 36458 IN NS ns-cloud-e2.googledomains.com.
stackoverflow.com. 36458 IN NS ns-358.awsdns-44.com.
stackoverflow.com. 36458 IN NS ns-1033.awsdns-01.org.
stackoverflow.com. 36458 IN NS ns-cloud-e1.googledomains.com.
於是他們就用 DSL 管理:
D(“stackoverflow.com”, REG_NAMEDOTCOM, DnsProvider(R53), DnsProvider(GCLOUD),
A(“@”, “198.252.206.16”),
A(“blog”, “198.252.206.20”),
CNAME(“chat”, “chat.stackexchange.com.”),
CNAME(“www”, “@”, TTL(3600)),
A(“meta”, “198.252.206.16”)
)
這套程式碼在「StackExchange/dnscontrol」這邊,但這樣搞有種微妙的感覺... 不考慮直接用兩家有支援 AXFR 架構的 DNS 商來架設嗎?這樣就只要用 BIND 這類已經很熟悉的軟體設定就好?