1
0
Fork 0
dns64/README.md

104 lines
2.4 KiB
Markdown

# dns64
> *DEPRECATED*: This plugin has been merged upstream. Credit goes to @SuperQ.
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
* [ ] Improve the hooking method
- At the moment, the plugin hijacks WriteMsg and does the modifications on the message being written. This very likely can break other plugins especially plugins like DNSSEC.
- [ ] What position should the plugin be?
## 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 the `proxy` plugin
## See Also
RFC 6147
## Installation
See [CoreDNS Documentation](https://coredns.io/2017/07/25/compile-time-enabling-or-disabling-plugins/) for more information on how to include this plugin. A [DNS64 example](https://github.com/serverwentdown/dns64-build) is available too.
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()
}
```