An open API service indexing awesome lists of open source software.

https://github.com/serverwentdown/dns64

CoreDNS plugin to run a DNS64 server
https://github.com/serverwentdown/dns64

coredns coredns-plugin dns64 golang

Last synced: 5 months ago
JSON representation

CoreDNS plugin to run a DNS64 server

Awesome Lists containing this project

README

          

# 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()
}
```