Add dns64 plugin (#3534)

* Add dns64 plugin

Add external plugin to core in-tree.
* Pull code from upstream: https://github.com/serverwentdown/dns64
* Update docs.

Signed-off-by: Ben Kochie <superq@gmail.com>

* Make dns64 consistent.

Signed-off-by: Ben Kochie <superq@gmail.com>

* Cleanup README

Signed-off-by: Ben Kochie <superq@gmail.com>

* Cleanup minor issues.

Signed-off-by: Ben Kochie <superq@gmail.com>

* Remove proxy method.

Signed-off-by: Ben Kochie <superq@gmail.com>

* dns64: big cleanup

* Make the code a bit more idiomatic
* Add tests
* use proper Upstream API

Signed-off-by: Casey Callendrello <c1@caseyc.net>
Signed-off-by: Ben Kochie <superq@gmail.com>

* A little more clenaup

* Fix some docs.
* Use the correct plugin register method.
* Cleanup some review items.

Signed-off-by: Ben Kochie <superq@gmail.com>

* Add metrics counter for DNS64 translations

Add a basic counter of how many DNS64 translations have been completed.

Signed-off-by: Ben Kochie <superq@gmail.com>

* Add DNSSEC bug link

Signed-off-by: Ben Kochie <superq@gmail.com>

* Test cleanup

Signed-off-by: Ben Kochie <superq@gmail.com>

* dns64: more test cleanup

Signed-off-by: Casey Callendrello <c1@caseyc.net>

Co-authored-by: Casey Callendrello <c1@caseyc.net>
This commit is contained in:
Ben Kochie
2020-03-26 08:42:23 +01:00
committed by GitHub
parent 1dba31ee7d
commit 4eeaef29ea
11 changed files with 1069 additions and 0 deletions

105
man/coredns-dns64.7 Normal file
View File

@@ -0,0 +1,105 @@
.\" Generated by Mmark Markdown Processer - mmark.miek.nl
.TH "COREDNS-DNS64" 7 "January 2020" "CoreDNS" "CoreDNS Plugins"
.SH "NAME"
.PP
\fIdns64\fP - enables DNS64 IPv6 transition mechanism.
.SH "DESCRIPTION"
.PP
From Wikipedia:
.PP
.RS
.PP
DNS64 describes a DNS server that when asked for a domain's AAAA records, but only finds
A records, synthesizes the AAAA records from the A records.
.RE
.PP
The synthesis in only performed if the query came in via IPv6.
.PP
See RFC 6147
\[la]https://tools.ietf.org/html/rfc6147\[ra] for more information.
.SH "SYNTAX"
.PP
.RS
.nf
dns64 [PREFIX] {
[translate\\\_all]
}
.fi
.RE
.IP \(bu 4
[PREFIX] defines a custom prefix instead of the default \fB\fC64:ff9b::/96\fR
.IP \(bu 4
\fB\fCtranslate_all\fR translates all queries, including respones that have AAAA results.
.SH "EXAMPLES"
.PP
Translate with the default well known prefix. Applies to all queries
.PP
.RS
.nf
dns64
.fi
.RE
.PP
Use a custom prefix
.PP
.RS
.nf
dns64 64:1337::/96
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
.IP \(bu 4
\fB\fCprefix\fR specifies any local IPv6 prefix to use, instead of the well known prefix (64:ff9b::/96)
.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
Follow CNAME records
.IP \(bu 4
Make resolver DNSSEC aware