I need to test AXFR and how it responds to notify, and yes this will get some proper *_test.go files in the near future, but for know I just need to know if it works just this once (TM). For this I need to transfer a zone and need to have a proper primary setup so that I can send notifies that CoreDNS will respond to.

So I ended up with the following Corefile, where 176.58.119.54 is the real primary, 127.0.0.1 is a fake one which allows me to send notifies with kdig.

miek.nl:1053 {
   secondary {
        transfer to *
        transfer from 176.58.119.54
        transfer from 127.0.0.1
    }
    errors stdout
    log stdout
}

Startup looks legit:

 ./coredns -log stdout
Activating privacy features...
2016/04/06 21:25:43 [INFO] Transferred: miek.nl.
miek.nl.:1053

Let’s send a notify and see what happens: kdig -t NOTIFY @localhost -p 1053 miek.nl

2016/04/06 22:15:37 [INFO] Notify from 127.0.0.1 for miek.nl.: checking transfer
2016/04/06 22:15:37 [INFO] Notify from 127.0.0.1 for miek.nl.: no serial increase seen
127.0.0.1 - [06/Apr/2016:22:15:37 +0100] "SOA IN miek.nl. udp false 512" NOERROR 25 24.356174ms

That last SOA query is CoreDNS querying itself for the zone… I think this should not create cycles… But there isn’t a transfer initiated, because the remote’s SOA serial isn’t increased. So lets try that… increases SOA serial. And resend the NOTIFY:

2016/04/06 22:17:07 [INFO] Notify from 127.0.0.1 for miek.nl.: checking transfer
2016/04/06 22:17:07 [INFO] Transferred: miek.nl.

W00T! That is working as intended. This is fixing issue 15, making it possible to run CoreDNS as my server. Doing that will surely turnup some more bugs, so leaving that bug open for a short while.