Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
69 lines (50 sloc) 1.42 KB


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.


Not all features required by DNS64 are implemented, only basic AAAA synthesis.

  • Resolve PTR records
  • Follow CNAME records
  • Make resolver DNSSEC aware


dns64 {
    upstream ADDRESS...
    prefix IPV6
  • upstream specifies the upstream resolver.
  • prefix specifies any local IPv6 prefix to use, in addition to the well known prefix (64:ff9b::/96).


In recursive resolver mode:

# Perform dns64 AAAA synthesizing using for resolving any A 
dns64 {
proxy .

To make DNS64 resolve authoritatively, do:

dns64 {
    upstream localhost:53
    # caveat: additional round trip through networking stack

See Also and RFC 6147.


$ go get
$ go get
$ cd $GOPATH/src/
$ vim plugin.cfg
# Add the line before the hosts middleware
$ go generate
$ go build
$ ./coredns -plugins | grep dns64