COREDNS-TRANSFER(7)

πŸ“¦
version 1.15.0 Β· 3 versions
, in opensuse-leap 16.0

πŸ’… COREDNS-TRANSFER ✨

okay so bestie, welcome to the transfer plugin's whole vibe β€” it's the manual page for COREDNS-TRANSFER(7), and yes we're getting into it 🫢

πŸŽ€ NAME πŸŽ€

transfer β€” it does the (outgoing) zone transfers for other plugins. that's the whole job. iconic of it honestly πŸ’…

✨ DESCRIPTION ✨

so this plugin is the one answering zone transfers on behalf of authoritative plugins that implement transfer.Transferer β€” like, it's the front desk and they're the department, yk? 🧚

transfer answers full zone transfer (AXFR) requests, and it answers incremental zone transfer (IXFR) requests with AXFR fallback if the zone has changed. yes, it's got backup plans. main character energy πŸ”₯

when a plugin wants to notify its secondaries, it calls back into the transfer plugin. team work, no cap 🀝

the plugins that implement zone transfers using this plugin are: file, auto, secondary, and kubernetes. and if you're a plugin author who wants to use this plugin, go read transfer.go for the implementation details β€” the lore is right there πŸ“–

🌸 SYNTAX 🌸

transfer [ZONE...] {
  to ADDRESS...
  source ADDRESS
}
  • ZONE β€” the zones transfer will answer zone transfer requests for. if you leave it blank, the zones are inherited from the enclosing server block. and lowkey important: to answer zone transfers for a given zone, there has to be another plugin in the same server block that serves the same zone and implements transfer.Transferer. no plugin, no transfers, that's the rule 🌈
  • to ADDRESS... β€” the hosts transfer will transfer to. use * to permit transfers to all addresses. zone change notifications get sent to all ADDRESS that are an IP address or an IP address and port, e.g. 1.2.3.4, 12:34::56, 1.2.3.4:5300, [12:34::56]:5300. and to can be specified multiple times β€” stack 'em up πŸ’…
  • source ADDRESS β€” this is the local IP address to use when sending zone change notifications to the configured to addresses. to be super clear: it does not change which clients are allowed to request AXFR or IXFR transfers. it's just the sender address, not the bouncer πŸ™ˆ

you can also use the acl plugin to further restrict hosts permitted to receive a zone transfer. see the example below, it's giving teamwork πŸ¦‹

πŸ‘‘ EXAMPLES πŸ‘‘

use it in conjunction with the acl plugin to restrict access to subnet 10.1.0.0/16. like, this is the whole "only my friends get in" moment:

...
  acl {
    allow type AXFR net 10.1.0.0/16
    allow type IXFR net 10.1.0.0/16
    block type AXFR net *
    block type IXFR net *
  }
  transfer {
    to *
  }
...

send NOTIFY messages from a specific local address β€” very "this is where i'm calling from" energy ✨

...
  transfer {
    to 2001:db8::1
    source 2001:db8::53
  }
...

and each plugin that can use transfer includes an example of use in their respective documentation β€” go check them out, they all slay in their own way πŸ’–


ngl the to * in that first example only works out because the acl plugin is doing the actual gatekeeping β€” read them together, bestie, not separately 😭

okay that's the whole page!! you understood it, i'm obsessed πŸ’œ

this was COREDNS-TRANSFER(7) from CoreDNS, dated October 2026 β€” mwah, go transfer some zones responsibly πŸŽ€βœ¨

πŸ“¦ where this page comes from