Files
coredns/man/coredns-dns64.7
2026-03-26 20:35:09 -07:00

167 lines
2.9 KiB
Groff

.\" Generated by Mmark Markdown Processer - mmark.miek.nl
.TH "COREDNS-DNS64" 7 "March 2026" "CoreDNS" "CoreDNS Plugins"
.SH "NAME"
.PP
\fIdns64\fP - enables DNS64 IPv6 transition mechanism.
.SH "DESCRIPTION"
.PP
The \fIdns64\fP plugin will when asked for a domain's AAAA records, but only finds A records,
synthesizes the AAAA records from the A records.
.PP
The synthesis is \fIonly\fP performed \fBif the query came in via IPv6\fP.
.PP
This translation is for IPv6-only networks that have NAT64
\[la]https://en.wikipedia.org/wiki/NAT64\[ra].
.SH "SYNTAX"
.PP
.RS
.nf
dns64 [PREFIX]
.fi
.RE
.IP \(bu 4
\fBPREFIX\fP defines a custom prefix instead of the default \fB\fC64:ff9b::/96\fR.
.PP
Or use this slightly longer form with more options:
.PP
.RS
.nf
dns64 [PREFIX] {
[translate\_all]
prefix PREFIX
[allow\_ipv4]
}
.fi
.RE
.IP \(bu 4
\fB\fCprefix\fR specifies any local IPv6 prefix to use, instead of the well known prefix (64:ff9b::/96)
.IP \(bu 4
\fB\fCtranslate_all\fR translates all queries, including responses that have AAAA results.
.IP \(bu 4
\fB\fCallow_ipv4\fR Allow translating queries if they come in over IPv4, default is IPv6 only translation.
.SH "EXAMPLES"
.PP
Translate with the default well known prefix. Applies to all queries (if they came in over IPv6).
.PP
.RS
.nf
\&. {
dns64
}
.fi
.RE
.PP
Use a custom prefix.
.PP
.RS
.nf
\&. {
dns64 64:1337::/96
}
.fi
.RE
.PP
Or
.PP
.RS
.nf
\&. {
dns64 {
prefix 64:1337::/96
}
}
.fi
.RE
.PP
Enable translation even if an existing AAAA record is present.
.PP
.RS
.nf
\&. {
dns64 {
translate\_all
}
}
.fi
.RE
.PP
Apply translation even to the requests which arrived over IPv4 network. Warning, the \fB\fCallow_ipv4\fR feature will apply
translations to requests coming from dual-stack clients. This means that a request for a client that sends an \fB\fCAAAA\fR
that would normal result in an \fB\fCNXDOMAIN\fR would get a translated result.
This may cause unwanted IPv6 dns64 traffic when a dualstack client would normally use the result of an \fB\fCA\fR record request.
.PP
.RS
.nf
\&. {
dns64 {
allow\_ipv4
}
}
.fi
.RE
.SH "METRICS"
.PP
If monitoring is enabled (via the \fIprometheus\fP plugin) then the following metrics are exported:
.IP \(bu 4
\fB\fCcoredns_dns64_requests_translated_total{server}\fR - counter of DNS requests translated
.PP
The \fB\fCserver\fR label is explained in the \fIprometheus\fP plugin documentation.
.SH "BUGS"
.PP
Not all features required by DNS64 are implemented, only basic AAAA synthesis.
.IP \(bu 4
Support "mapping of separate IPv4 ranges to separate IPv6 prefixes"
.IP \(bu 4
Resolve PTR records
.IP \(bu 4
Make resolver DNSSEC aware. See: RFC 6147 Section 3
\[la]https://tools.ietf.org/html/rfc6147#section-3\[ra]
.SH "SEE ALSO"
.PP
See RFC 6147
\[la]https://tools.ietf.org/html/rfc6147\[ra] for more information on the DNS64 mechanism.