Files
coredns/plugin/transfer
Ville Vesilehto c916cf4259 fix(plugin): nilness findings (#7556)
Enable nilness linter in govet.

Plugin-by-plugin rationale:

- plugin/transfer: reuse error instead of shadowing it inside the for
  loop by declaring "ret" outside of the loop
- plugin/view: remove redundant err check
- plugin/dnstap: avoid possible nil dereference in error reporting
  path in setup test
- plugin/forward: prevent nil deference or empty-slice dereference on
  error paths in setup test

Signed-off-by: Ville Vesilehto <ville@vesilehto.fi>
2025-09-15 10:17:06 -07:00
..
2024-08-18 07:13:53 +02:00
2022-07-10 11:06:33 -07:00
2022-06-27 15:48:34 -04:00

transfer

Name

transfer - perform (outgoing) zone transfers for other plugins.

Description

This plugin answers zone transfers for authoritative plugins that implement transfer.Transferer.

transfer answers full zone transfer (AXFR) requests and incremental zone transfer (IXFR) requests with AXFR fallback if the zone has changed.

When a plugin wants to notify it's secondaries it will call back into the transfer plugin.

The following plugins implement zone transfers using this plugin: file, auto, secondary, and kubernetes. See transfer.go for implementation details if you are a plugin author that wants to use this plugin.

Syntax

transfer [ZONE...] {
  to ADDRESS...
}
  • ZONE The zones transfer will answer zone transfer requests for. If left blank, the zones are inherited from the enclosing server block. To answer zone transfers for a given zone, there must be another plugin in the same server block that serves the same zone, and implements transfer.Transferer.

  • to ADDRESS... The hosts transfer will transfer to. Use * to permit transfers to all addresses. Zone change notifications are 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. to may be specified multiple times.

You can use the acl plugin to further restrict hosts permitted to receive a zone transfer. See example below.

Examples

Use in conjunction with the acl plugin to restrict access to subnet 10.1.0.0/16.

...
  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 *
  }
...

Each plugin that can use transfer includes an example of use in their respective documentation.