1
0
Fork 0
dns64/README.md

97 lines
2.0 KiB
Markdown
Raw Normal View History

2017-08-20 10:05:36 +08:00
# dns64
2017-12-20 15:16:50 +08:00
The `dns64` plugin implements the DNS64 IPv6 transition mechanism. From Wikipedia:
2017-12-20 15:16:50 +08:00
> 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.
2017-12-26 23:44:13 +08:00
## TODO
2017-12-26 23:47:10 +08:00
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"
2017-12-26 23:44:13 +08:00
* [ ] Resolve PTR records
* [ ] Follow CNAME records
* [ ] Make resolver DNSSEC aware
## Usage
2017-12-20 15:16:50 +08:00
> **The syntax has changed since 20 September 2019**. "upstream" has been renamed to proxy
2017-12-20 15:16:50 +08:00
Translate with the well known prefix. Applies to all queries
2017-12-20 15:16:50 +08:00
```
dns64
```
2017-12-20 15:16:50 +08:00
Use a custom prefix
2017-12-26 20:24:27 +08:00
```
dns64 64:1337::/96
# Or
2017-12-20 15:16:50 +08:00
dns64 {
prefix 64:1337::/96
2017-12-20 15:16:50 +08:00
}
```
2017-12-20 15:16:50 +08:00
Use a reverse proxy, with a custom prefix
2017-12-26 20:24:27 +08:00
```
2017-12-26 20:24:27 +08:00
dns64 {
proxy . 1.1.1.1 1.0.0.1
prefix 64:1337::/96
2017-12-26 20:24:27 +08:00
}
```
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
2017-12-20 15:16:50 +08:00
## See Also
RFC 6147
2017-12-20 15:16:50 +08:00
2017-12-24 05:30:51 +08:00
## 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. 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()
}
2017-12-24 05:30:51 +08:00
```
You might have to copy CoreDNS's `go.mod`