Ambrose Chua e885fbe714 | ||
---|---|---|
LICENSE | ||
README.md | ||
dns64.go | ||
dns64_test.go | ||
go.mod | ||
go.sum | ||
setup.go | ||
setup_test.go |
README.md
dns64
The dns64
plugin implements the DNS64 IPv6 transition mechanism. From Wikipedia:
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.
The synthesis in only performed if the query came in via IPv6.
TODO
Not all features required by DNS64 are implemented, only basic AAAA synthesis.
- Support other
proxy
protocols in the configuration file- Requires writing a custom parser for the proxy plugin
- Support "mapping of separate IPv4 ranges to separate IPv6 prefixes"
- Resolve PTR records
- Follow CNAME records
- Make resolver DNSSEC aware
- Improve test coverage
Usage
The syntax has changed since 20 September 2019. "upstream" has been renamed to proxy
Translate with the well known prefix. Applies to all queries
dns64
Use a custom prefix
dns64 64:1337::/96
# Or
dns64 {
prefix 64:1337::/96
}
Use a reverse proxy, with a custom prefix
dns64 {
proxy . 1.1.1.1 1.0.0.1
prefix 64:1337::/96
}
Enable translation even if an existing AAAA record is present
dns64 {
translateAll
}
prefix
specifies any local IPv6 prefix to use, instead of the well known prefix (64:ff9b::/96)proxy
optionally specifies upstream DNS protocol addresses like theproxy
plugin
See Also
RFC 6147
Installation
See CoreDNS Documentation for more information on how to include this plugin. Here's the summary:
package main
import (
_ "github.com/coredns/coredns/core/plugin"
_ "github.com/coredns/proxy"
_ "github.com/serverwentdown/dns64"
"github.com/coredns/coredns/core/dnsserver"
"github.com/coredns/coredns/coremain"
)
var additionalDirectives = []string{
"dns64",
"proxy",
}
func init() {
dnsserver.Directives = append(dnsserver.Directives, additionalDirectives...)
}
func main() {
coremain.Run()
}
You might have to copy CoreDNS's go.mod