alias

package module
v0.0.0-...-e611069 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 17, 2023 License: Apache-2.0 Imports: 6 Imported by: 1

README

alias

The alias plugin eliminates CNAME records from zone apex by making the subsequent resolved records look like they belong to the zone apex. This behaves similarily to CloudFlare's Zone Flattening.

This plugin works only with plugins that produce A or AAAA records alongside the CNAME record. Examples include auto and file. However, you might need to adjust the order of this plugin to use it with other plugins.

Preferrably, this should not be used in favour of the RFC drafts for the new ANAME records, but the DNS library used by CoreDNS does not support ANAME records yet.

Release builds can be found here

Syntax

alias

Examples

example.com {
	file db.example.com
	alias
}
# This is used to resolve CNAME records by the `file` plugin. Modify accordingly
. {
	forward . 1.1.1.1 1.0.0.1
}

This will transform responses like this:

;; ANSWER SECTION:
example.com.		3600	IN	CNAME	two.example.org.
two.example.org.	3600	IN	CNAME	one.example.net.
one.example.net.	3600	IN	A	127.0.0.1

into

;; ANSWER SECTION:
example.com.		3600	IN	A	127.0.0.1

See example/ for a more extensive example.

Installation

As per CoreDNS docs, there are two ways.

Build with compile-time configuration file
$ git clone https://github.com/coredns/coredns
$ cd coredns
$ vim plugin.cfg
# Add the line alias:github.com/serverwentdown/alias before the file middleware
$ go generate
$ go build
$ ./coredns -plugins | grep alias
Build with external golang source code
$ git clone https://github.com/serverwentdown/alias
$ cd alias/coredns
$ go build
$ ./coredns -plugins | grep alias

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Alias

type Alias struct {
	Next plugin.Handler
}

Rewrite is plugin to rewrite requests internally before being handled.

func (Alias) Name

func (al Alias) Name() string

Name implements the Handler interface.

func (Alias) Ready

func (al Alias) Ready() bool

func (Alias) ServeDNS

func (al Alias) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error)

ServeDNS implements the plugin.Handler interface.

type ResponseModifier

type ResponseModifier struct {
	dns.ResponseWriter
}

func NewResponseModifier

func NewResponseModifier(w dns.ResponseWriter) *ResponseModifier

Returns a dns.Msg modifier that replaces CNAME on root zones with other records.

func (*ResponseModifier) Hijack

func (r *ResponseModifier) Hijack()

Hijack implements dns.Hijacker. It simply wraps the underlying ResponseWriter's Hijack method if there is one, or returns an error.

func (*ResponseModifier) Write

func (r *ResponseModifier) Write(buf []byte) (int, error)

Write is a wrapper that records the size of the message that gets written.

func (*ResponseModifier) WriteMsg

func (r *ResponseModifier) WriteMsg(res *dns.Msg) error

WriteMsg records the status code and calls the underlying ResponseWriter's WriteMsg method.

Directories

Path Synopsis
coredns module

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL