1
0
Fork 0
Go to file
Ambrose Chua 9974ddb0d2
Rewrite code for new CoreDNS and proxy API
Also changes our API. Closes #9
2019-09-20 15:04:51 +08:00
LICENSE Create LICENSE 2017-12-24 05:16:24 +08:00
README.md Rewrite code for new CoreDNS and proxy API 2019-09-20 15:04:51 +08:00
dns64.go Rewrite code for new CoreDNS and proxy API 2019-09-20 15:04:51 +08:00
dns64_test.go Rewrite code for new CoreDNS and proxy API 2019-09-20 15:04:51 +08:00
go.mod Rewrite code for new CoreDNS and proxy API 2019-09-20 15:04:51 +08:00
go.sum Rewrite code for new CoreDNS and proxy API 2019-09-20 15:04:51 +08:00
setup.go Rewrite code for new CoreDNS and proxy API 2019-09-20 15:04:51 +08:00
setup_test.go Rewrite code for new CoreDNS and proxy API 2019-09-20 15:04:51 +08:00

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

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 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