coredns/plugin/hosts
Miek Gieben ba1efee4f1
Default to scrubbing replies in the server (#2012)
Every plugin needs to deal with EDNS0 and should call Scrub to make a
message fit the client's buffer. Move this functionality into the server
and wrapping the ResponseWriter into a ScrubWriter that handles these
bits for us. Result:

Less code and faster, because multiple chained plugins could all be
calling scrub and SizeAndDo - now there is just one place.

Most tests in file/* and dnssec/* needed adjusting because in those unit
tests you don't see OPT RRs anymore. The DNSSEC signer was also looking
at the returned OPT RR to see if it needed to sign - as those are now
added by the server (and thus later), this needed to change slightly.

Scrub itself still exist (for backward compat reasons), but has been
made a noop. Scrub has been renamed to scrub as it should not be used by
external plugins.

Fixes: #2010

Signed-off-by: Miek Gieben <miek@miek.nl>
2018-08-29 12:26:22 +01:00
..
hosts.go Default to scrubbing replies in the server (#2012) 2018-08-29 12:26:22 +01:00
hosts_test.go all: fix plugin import ordering (#1717) 2018-04-22 08:34:35 +01:00
hostsfile.go Typo fixes (#2031) 2018-08-14 08:55:55 -07:00
hostsfile_test.go Remove trailing whitespace (#1955) 2018-07-09 08:08:02 -04:00
log_test.go Clean up tests logging (#1979) 2018-07-19 16:23:06 +01:00
OWNERS Add OWNERS file (#1486) 2018-02-08 10:55:51 +00:00
README.md Remove trailing whitespace (#1955) 2018-07-09 08:08:02 -04:00
setup.go Use logging (#1718) 2018-04-22 21:40:33 +01:00
setup_test.go return an error for multiple use of some plugins (#1559) 2018-02-28 18:16:05 -08:00

hosts

Name

hosts - enables serving zone data from a /etc/hosts style file.

Description

The hosts plugin is useful for serving zones from a /etc/hosts file. It serves from a preloaded file that exists on disk. It checks the file for changes and updates the zones accordingly. This plugin only supports A, AAAA, and PTR records. The hosts plugin can be used with readily available hosts files that block access to advertising servers.

This plugin can only be used once per Server Block.

The hosts file

Commonly the entries are of the from IP_address canonical_hostname [aliases...] as explained by the hosts(5) man page.

Examples:

# The following lines are desirable for IPv4 capable hosts
127.0.0.1       localhost
192.168.1.10    example.com            example

# The following lines are desirable for IPv6 capable hosts
::1                     localhost ip6-localhost ip6-loopback
fdfc:a744:27b5:3b0e::1  example.com example

PTR records

PTR records for reverse lookups are generated automatically by CoreDNS (based on the hosts file entries) and cannot be created manually.

Syntax

hosts [FILE [ZONES...]] {
    [INLINE]
    fallthrough [ZONES...]
}
  • FILE the hosts file to read and parse. If the path is relative the path from the root directive will be prepended to it. Defaults to /etc/hosts if omitted. We scan the file for changes every 5 seconds.
  • ZONES zones it should be authoritative for. If empty, the zones from the configuration block are used.
  • INLINE the hosts file contents inlined in Corefile. If there are any lines before fallthrough then all of them will be treated as the additional content for hosts file. The specified hosts file path will still be read but entries will be overrided.
  • fallthrough If zone matches and no record can be generated, pass request to the next plugin. If [ZONES...] is omitted, then fallthrough happens for all zones for which the plugin is authoritative. If specific zones are listed (for example in-addr.arpa and ip6.arpa), then only queries for those zones will be subject to fallthrough.

Examples

Load /etc/hosts file.

. {
    hosts
}

Load example.hosts file in the current directory.

. {
    hosts example.hosts
}

Load example.hosts file and only serve example.org and example.net from it and fall through to the next plugin if query doesn't match.

. {
    hosts example.hosts example.org example.net {
        fallthrough
    }
}

Load hosts file inlined in Corefile.

. {
    hosts example.hosts example.org {
        10.0.0.1 example.org
        fallthrough
    }
}

See also

The form of the entries in the /etc/hosts file are based on IETF RFC 952 which was updated by IETF RFC 1123.