From b89f9c66d1ae16d396aa6517e81239cfd3955c36 Mon Sep 17 00:00:00 2001 From: Tom Limoncelli Date: Sat, 5 Aug 2017 11:59:35 -0400 Subject: [PATCH] convertzone should do a better job with NS records. Fixes https://github.com/StackExchange/dnscontrol/issues/162 --- cmd/convertzone/README.md | 4 ++++ cmd/convertzone/main.go | 5 +++++ docs/migrating.md | 9 +++++++-- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/cmd/convertzone/README.md b/cmd/convertzone/README.md index 9f2d30c36..c405a26db 100644 --- a/cmd/convertzone/README.md +++ b/cmd/convertzone/README.md @@ -1,5 +1,9 @@ # convertzone -- Converts a standard DNS zonefile into tsv, pretty, or DSL +This is a crude hack we put together to read a BIND-style zonefile +and output a draft DNSControl dnsconfig.js file. It does about 90% +of the work, but it isn't complete. + ## Building the software Build the software and install in your personal bin: diff --git a/cmd/convertzone/main.go b/cmd/convertzone/main.go index 8b4feea6b..2950dea41 100644 --- a/cmd/convertzone/main.go +++ b/cmd/convertzone/main.go @@ -106,6 +106,11 @@ func rrFormat(zonename string, filename string, r io.Reader, defaultTTL uint32, target = strings.Replace(target, " ", "\t", 1) } + // NS records at the apex should be NAMESERVER() records. + if hdr.Rrtype == dns.TypeNS && name == "@" { + typeStr = "NAMESERVER" + } + if !dsl { // TSV format: fmt.Printf("%s\t%s\t%s\t%s\t%s\n", name, ttl, classStr, typeStr, target) } else { // DSL format: diff --git a/docs/migrating.md b/docs/migrating.md index 9dfb60782..8b2056040 100644 --- a/docs/migrating.md +++ b/docs/migrating.md @@ -21,8 +21,8 @@ more important, zones as you gain confidence. Experience has taught us that the best way to migrate a zone is to create an exact duplicate first. That is, convert the old DNS records with no changes. It is tempting to clean up the data as you do the migration... -removing that old CNAME that nobody uses any more, or adding that missing -A record you noticed. Resist that temptation. If you make any +removing that old CNAME that nobody uses any more, or adding an +A record you discovered was missing. Resist that temptation. If you make any changes it will be difficult to tell which changes were intentional and which are typos. During the migration you will know you are done when `dnscontrol preview` says there are no changes needed. If there @@ -59,6 +59,11 @@ Edit dnsconfig.js until `dnscontrol preview` shows no errors and no changes to be made. This means the conversion of your old DNS data is correct. +convertzone makes a guess at what to do with NS records. If +they An NS record at the AP is turned into a NAMESERVER() call, the +rest are left as NS(). You probably want to check each of them for +correctness. + Resist the temptation to clean up and old, obsolete, records or to add anything new. Experience has shown that making changes at this time leads to unhappy surprises, and people will blame DNSControl.