* v1.2.6

Signed-off-by: Miek Gieben <miek@miek.nl>
This commit is contained in:
Miek Gieben
2018-11-06 07:25:13 +00:00
committed by GitHub
parent 74e70eb910
commit ee16dd2c8d
36 changed files with 167 additions and 58 deletions
+49
View File
@@ -0,0 +1,49 @@
+++
title = "CoreDNS-1.2.6 Release"
description = "CoreDNS-1.2.6 Release Notes."
tags = ["Release", "1.2.6", "Notes"]
release = "1.2.6"
date = "2018-11-05T20:40:29+01:00"
author = "coredns"
+++
We are pleased to announce the [release](https://github.com/coredns/coredns/releases/tag/v1.2.6) of
CoreDNS-1.2.6!
## Core
Ignore the error when setting SO_REUSEPORT on a socket fails; this makes CoreDNS work on older
kernels.
## Plugins
* [*etcd*](/plugins/etcd) has seen minor bugfixes.
* [*loop*](/plugins/loop) fixes a bug when dealing with a failing upstream.
* [*log*](/plugins/log) unifies all logging (done by this plugin and normal logs) and always use
RFC3339 timestamps (with millisecond accuracy). The `{when}` verb has been made a noop, it will
be removed in the next release.
* [*cache*](/plugins/cache) got some minor optimizations.
* [*errors*](/plugins/errors) (and *log*) gotten a new option (`consolidate`) to suppress loging.
* [*hosts*](/plugins/hosts) will now read the `hosts` file without holding a write lock.
* [*route53*](/plugins/route53) makes the upstream optional.
## Brought to You By
Carl-Magnus Björkell,
Chris O'Haver,
Dzmitry Razhanski,
Francois Tur,
Jiacheng Xu,
Matthias Lechner,
Miek Gieben,
Ruslan Drozhdzh,
Stuart Nelson.
For documentation see our (in progress!) [manual](/manual). For help and other resources, see our
[community page](https://coredns.io/community/).
+3 -3
View File
@@ -4,7 +4,7 @@ description = "*auto* enables serving zone data from an RFC 1035-style master fi
weight = 1
tags = [ "plugin", "auto" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.644217"
date = "2018-11-06T07:19:41.749269"
+++
## Description
@@ -35,8 +35,8 @@ are used.
name `db.example.com`, the extracted origin will be `example.com`. **TIMEOUT** specifies how often
CoreDNS should scan the directory; the default is every 60 seconds. This value is in seconds.
The minimum value is 1 second.
* `reload` interval to perform reload of zone if SOA version changes. Default is one minute.
Value of `0` means to not scan for changes and reload. eg. `30s` checks zonefile every 30 seconds
* `reload` interval to perform reload of zone if SOA version changes. Default is one minute.
Value of `0` means to not scan for changes and reload. eg. `30s` checks zonefile every 30 seconds
and reloads zone when serial changes.
* `no_reload` deprecated. Sets reload to 0.
* `upstream` defines upstream resolvers to be used resolve external names found (think CNAMEs)
+5 -1
View File
@@ -4,7 +4,7 @@ description = "*autopath* allows for server-side search path completion."
weight = 2
tags = [ "plugin", "autopath" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.644512"
date = "2018-11-06T07:19:41.750051"
+++
## Description
@@ -50,3 +50,7 @@ autopath @kubernetes
~~~
Use the search path dynamically retrieved from the *kubernetes* plugin.
## Known Issues
Autopath is not compatible with pods running from Windows nodes.
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*bind* overrides the host to which the server should bind."
weight = 3
tags = [ "plugin", "bind" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.644753"
date = "2018-11-06T07:19:41.750340"
+++
## Description
+8 -8
View File
@@ -4,7 +4,7 @@ description = "*cache* enables a frontend cache."
weight = 4
tags = [ "plugin", "cache" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.644932"
date = "2018-11-06T07:19:41.750613"
+++
## Description
@@ -27,9 +27,8 @@ cache [TTL] [ZONES...]
* **ZONES** zones it should cache for. If empty, the zones from the configuration block are used.
Each element in the cache is cached according to its TTL (with **TTL** as the max).
For the negative cache, the SOA's MinTTL value is used. A TTL of zero is not allowed.
A cache is divided into 256 shards, each holding up to 512 items by default - for a total size
of 256 * 512 = 131,072 items.
A cache is divided into 256 shards, each holding up to 39 items by default - for a total size
of 256 * 39 = 9984 items.
If you want more control:
@@ -44,10 +43,10 @@ cache [TTL] [ZONES...] {
* **TTL** and **ZONES** as above.
* `success`, override the settings for caching successful responses. **CAPACITY** indicates the maximum
number of packets we cache before we start evicting (*randomly*). **TTL** overrides the cache maximum TTL.
**MINTTL** overrides the cache minimum TTL (default 0), which can be useful to limit queries to the backend.
**MINTTL** overrides the cache minimum TTL (default 5), which can be useful to limit queries to the backend.
* `denial`, override the settings for caching denial of existence responses. **CAPACITY** indicates the maximum
number of packets we cache before we start evicting (LRU). **TTL** overrides the cache maximum TTL.
**MINTTL** overrides the cache minimum TTL (default 0), which can be useful to limit queries to the backend.
**MINTTL** overrides the cache minimum TTL (default 5), which can be useful to limit queries to the backend.
There is a third category (`error`) but those responses are never cached.
* `prefetch` will prefetch popular items when they are about to be expunged from the cache.
Popular means **AMOUNT** queries have been seen with no gaps of **DURATION** or more between them.
@@ -57,7 +56,8 @@ cache [TTL] [ZONES...] {
## Capacity and Eviction
If **CAPACITY** is not specified, the default cache size is 10,000 per cache. The minimum allowed cache size is 1024.
If **CAPACITY** _is not_ specified, the default cache size is 9984 per cache. The minimum allowed cache size is 1024.
If **CAPACITY** _is_ specified, the actual cache size used will be rounded down to the nearest number divisible by 256 (so all shards are equal in size).
Eviction is done per shard. In effect, when a shard reaches capacity, items are evicted from that shard.
Since shards don't fill up perfectly evenly, evictions will occur before the entire cache reaches full capacity.
@@ -104,4 +104,4 @@ Enable caching for all zones, keep a positive cache size of 5000 and a negative
denial 2500
}
}
~~~
~~~
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*chaos* allows for responding to TXT queries in the CH class."
weight = 5
tags = [ "plugin", "chaos" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.645161"
date = "2018-11-06T07:19:41.750855"
+++
## Description
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*debug* disables the automatic recovery upon a crash so that you'
weight = 6
tags = [ "plugin", "debug" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.645356"
date = "2018-11-06T07:19:41.751094"
+++
## Description
+8 -3
View File
@@ -4,7 +4,7 @@ description = "*dnssec* enable on-the-fly DNSSEC signing of served data."
weight = 7
tags = [ "plugin", "dnssec" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.645628"
date = "2018-11-06T07:19:41.751303"
+++
## Description
@@ -24,8 +24,13 @@ dnssec [ZONES... ] {
}
~~~
The specified key is used for all signing operations. The DNSSEC signing will treat this key as a
CSK (common signing key), forgoing the ZSK/KSK split. All signing operations are done online.
The signing behavior depends on the keys specified. If multiple keys are specified of which there is
at least one key with the SEP bit set and at least one key with the SEP bit unset, signing will happen
in split ZSK/KSK mode. DNSKEY records will be signed with all keys that have the SEP bit set. All other
records will be signed with all keys that do not have the SEP bit set.
In any other case, each specified key will be treated as a CSK (common signing key), forgoing the
ZSK/KSK split. All signing operations are done online.
Authenticated denial of existence is implemented with NSEC black lies. Using ECDSA as an algorithm
is preferred as this leads to smaller signatures (compared to RSA). NSEC3 is *not* supported.
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*dnstap* enable logging to dnstap."
weight = 8
tags = [ "plugin", "dnstap" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.645869"
date = "2018-11-06T07:19:41.751539"
+++
## Description
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*erratic* a plugin useful for testing client behavior."
weight = 9
tags = [ "plugin", "erratic" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.646108"
date = "2018-11-06T07:19:41.751768"
+++
## Description
+34 -2
View File
@@ -4,21 +4,41 @@ description = "*errors* enable error logging."
weight = 10
tags = [ "plugin", "errors" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.646239"
date = "2018-11-06T07:19:41.751983"
+++
## Description
Any errors encountered during the query processing will be printed to standard output.
Any errors encountered during the query processing will be printed to standard output. The errors of particular type can be consolidated and printed once per some period of time.
This plugin can only be used once per Server Block.
## Syntax
The basic syntax is:
~~~
errors
~~~
Extra knobs are available with an expanded syntax:
~~~
errors {
consolidate DURATION REGEXP
}
~~~
Option `consolidate` allows collecting several error messages matching the regular expression **REGEXP** during **DURATION**. After the **DURATION** since receiving the first such message, the consolidated message will be printed to standard output, e.g.
~~~
2 errors like '^read udp .* i/o timeout$' occurred in last 30s
~~~
Multiple `consolidate` options with different **DURATION** and **REGEXP** are allowed. In case if some error message corresponds to several defined regular expressions the message will be associated with the first appropriate **REGEXP**.
For better performance, it's recomended to use the `^` or `$` metacharacters in regular expression when filtering error messages by prefix or suffix, e.g. `^failed to .*`, or `.* timeout$`.
## Examples
Use the *whoami* to respond to queries and Log errors to standard output.
@@ -29,3 +49,15 @@ Use the *whoami* to respond to queries and Log errors to standard output.
errors
}
~~~
Use the *forward* to resolve queries via 8.8.8.8 and print consolidated error messages for errors with suffix " i/o timeout" or with prefix "Failed to ".
~~~ corefile
. {
forward . 8.8.8.8
errors {
consolidate 5m ".* i/o timeout$"
consolidate 30s "^Failed to .+"
}
}
~~~
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*etcd* enables reading zone data from an etcd version 3 instance.
weight = 11
tags = [ "plugin", "etcd" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.646520"
date = "2018-11-06T07:19:41.752281"
+++
## Description
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*federation* enables federated queries to be resolved via the kub
weight = 12
tags = [ "plugin", "federation" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.646722"
date = "2018-11-06T07:19:41.752517"
+++
## Description
+3 -3
View File
@@ -4,7 +4,7 @@ description = "*file* enables serving zone data from an RFC 1035-style master fi
weight = 13
tags = [ "plugin", "file" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.646930"
date = "2018-11-06T07:19:41.752730"
+++
## Description
@@ -40,8 +40,8 @@ file DBFILE [ZONES... ] {
the direction. **ADDRESS** must be denoted in CIDR notation (127.0.0.1/32 etc.) or just as plain
addresses. The special wildcard `*` means: the entire internet (only valid for 'transfer to').
When an address is specified a notify message will be send whenever the zone is reloaded.
* `reload` interval to perform reload of zone if SOA version changes. Default is one minute.
Value of `0` means to not scan for changes and reload. eg. `30s` checks zonefile every 30 seconds
* `reload` interval to perform reload of zone if SOA version changes. Default is one minute.
Value of `0` means to not scan for changes and reload. eg. `30s` checks zonefile every 30 seconds
and reloads zone when serial changes.
* `no_reload` deprecated. Sets reload to 0.
* `upstream` defines upstream resolvers to be used resolve external names found (think CNAMEs)
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*forward* facilitates proxying DNS messages to upstream resolvers
weight = 14
tags = [ "plugin", "forward" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.647176"
date = "2018-11-06T07:19:41.753019"
+++
## Description
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*health* enables a health check endpoint."
weight = 15
tags = [ "plugin", "health" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.647416"
date = "2018-11-06T07:19:41.753251"
+++
## Description
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*hosts* enables serving zone data from a `/etc/hosts` style file.
weight = 16
tags = [ "plugin", "hosts" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.647629"
date = "2018-11-06T07:19:41.753486"
+++
## Description
+2 -1
View File
@@ -4,7 +4,7 @@ description = "*kubernetes* enables the reading zone data from a Kubernetes clus
weight = 17
tags = [ "plugin", "kubernetes" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.647941"
date = "2018-11-06T07:19:41.753850"
+++
## Description
@@ -37,6 +37,7 @@ kubernetes [ZONES...] {
resyncperiod DURATION
endpoint URL [URL...]
tls CERT KEY CACERT
kubeconfig KUBECONFIG CONTEXT
namespaces NAMESPACE...
labels EXPRESSION
pods POD-MODE
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*loadbalance* randomize the order of A, AAAA and MX records."
weight = 18
tags = [ "plugin", "loadbalance" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.648151"
date = "2018-11-06T07:19:41.754062"
+++
## Description
+13 -7
View File
@@ -4,15 +4,16 @@ description = "*log* enables query logging to standard output."
weight = 19
tags = [ "plugin", "log" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.648381"
date = "2018-11-06T07:19:41.754302"
+++
## Description
By just using *log* you dump all queries (and parts for the reply) on standard output. Options exist
to tweak the output a little.
to tweak the output a little. The date/time prefix on log lines is RFC3339 formatted with
milliseconds.
Note that for busy servers this will incur a performance hit.
Note that for busy servers logging will incur a performance hit.
## Syntax
@@ -62,15 +63,14 @@ The following place holders are supported:
* `{name}`: qname of the request
* `{class}`: qclass of the request
* `{proto}`: protocol used (tcp or udp)
* `{when}`: time of the query
* `{remote}`: client's IP address, for IPv6 addresses these are enclosed in brackets: `[::1]`
* `{size}`: request size in bytes
* `{port}`: client's port
* `{duration}`: response duration
* `{rcode}`: response RCODE
* `{rsize}`: response size
* `{rsize}`: raw (uncompressed), response size (a client may receive a smaller response)
* `{>rflags}`: response flags, each set flag will be displayed, e.g. "aa, tc". This includes the qr
bit as well.
bit as well
* `{>bufsize}`: the EDNS0 buffer size advertised in the query
* `{>do}`: is the EDNS0 DO (DNSSEC OK) bit set in the query
* `{>id}`: query ID
@@ -79,9 +79,15 @@ The following place holders are supported:
The default Common Log Format is:
~~~ txt
`{remote}:{port} - [{when}] {>id} "{type} {class} {name} {proto} {size} {>do} {>bufsize}" {rcode} {>rflags} {rsize} {duration}`
`{remote}:{port} - {>id} "{type} {class} {name} {proto} {size} {>do} {>bufsize}" {rcode} {>rflags} {rsize} {duration}`
~~~
Each of these logs will be outputted with `log.Infof`, so a typical example looks like this:
~~~ txt
2018-10-30T19:10:07.547Z [INFO] [::1]:50759 - 29008 "A IN example.org. udp 41 false 4096" NOERROR qr,rd,ra,ad 68 0.037990251s
~~~~
## Examples
Log all requests to stdout
+5 -3
View File
@@ -4,7 +4,7 @@ description = "*loop* detect simple forwarding loops and halt the server."
weight = 20
tags = [ "plugin", "loop" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.648581"
date = "2018-11-06T07:19:41.754524"
+++
## Description
@@ -57,7 +57,8 @@ DNS servers. This is a fatal error because operating with an infinite loop will
memory and CPU until eventual out of memory death by the host.
A forwarding loop is usually caused by:
* Most commonly, CoreDNS forwarding requests directly to itself. e.g. to `127.0.0.1` or `127.0.0.53`
* Most commonly, CoreDNS forwarding requests directly to itself. e.g. via a loopback address such as `127.0.0.1`, `::1` or `127.0.0.53`
* Less commonly, CoreDNS forwarding to an upstream server that in turn, forwards requests back to CoreDNS.
To troubleshoot this problem, look in your Corefile for any `proxy` or `forward` to the zone
@@ -78,9 +79,10 @@ to proxy/forward requests to. Since it contains a local address, CoreDNS ends u
requests to itself.
There are many ways to work around this issue, some are listed here:
* Add the following to `kubelet`: `--resolv-conf /run/systemd/resolve/resolv.conf`. This flag
tells `kubelet` to pass an alternate `resolv.conf` to Pods. For `systemd-resolved`,
`/run/systemd/resolve/resolv.conf` is typically the location of the "original" `/etc/resolv.conf`.
* Disable `systemd-resolved` on host nodes, and restore `/etc/resolv.conf` to the original.
* A quick and dirty fix is to edit your Corefile, replacing `proxy . /etc/resolv.conf` with
the ip address of your upstream DNS, for example `proxy . 8.8.8.8`.
the ip address of your upstream DNS, for example `proxy . 8.8.8.8`.
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*metadata* enable a meta data collector."
weight = 21
tags = [ "plugin", "metadata" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.648804"
date = "2018-11-06T07:19:41.754735"
+++
## Description
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*prometheus* enables [Prometheus](https://prometheus.io/) metrics
weight = 22
tags = [ "plugin", "metrics" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.649021"
date = "2018-11-06T07:19:41.754966"
+++
## Description
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*nsid* adds an identifier of this server to each reply."
weight = 23
tags = [ "plugin", "nsid" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.649228"
date = "2018-11-06T07:19:41.755211"
+++
## Description
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*pprof* publishes runtime profiling data at endpoints under `/deb
weight = 24
tags = [ "plugin", "pprof" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.649472"
date = "2018-11-06T07:19:41.755448"
+++
## Description
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*proxy* facilitates both a basic reverse proxy and a robust load
weight = 25
tags = [ "plugin", "proxy" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.649710"
date = "2018-11-06T07:19:41.755711"
+++
## Description
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*reload* allows automatic reload of a changed Corefile."
weight = 26
tags = [ "plugin", "reload" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.649974"
date = "2018-11-06T07:19:41.755946"
+++
## Description
+11 -1
View File
@@ -4,7 +4,7 @@ description = "*rewrite* performs internal message rewriting."
weight = 27
tags = [ "plugin", "rewrite" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.650301"
date = "2018-11-06T07:19:41.756301"
+++
## Description
@@ -188,6 +188,16 @@ follows:
rewrite [continue|stop] name regex STRING STRING answer name STRING STRING
```
When using `exact` name rewrite rules, answer gets re-written automatically,
and there is no need defining `answer name` instruction. The below rule
rewrites the name in a request from `RED` to `BLUE`, and subsequently
rewrites the name in a corresponding response from `BLUE` to `RED`. The
client in the request would see only `RED` and no `BLUE`.
```
rewrite [continue|stop] name exact RED BLUE
```
### TTL Field Rewrites
At times, the need for rewriting TTL value could arise. For example, a DNS server
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*root* simply specifies the root of where to find (zone) files."
weight = 28
tags = [ "plugin", "root" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.650535"
date = "2018-11-06T07:19:41.756523"
+++
## Description
+2 -2
View File
@@ -4,7 +4,7 @@ description = "*route53* enables serving zone data from AWS route53."
weight = 29
tags = [ "plugin", "route53" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.650767"
date = "2018-11-06T07:19:41.756740"
+++
## Description
@@ -35,7 +35,7 @@ route53 [ZONE:HOSTED_ZONE_ID...] {
* `upstream` [**ADDRESS**...] specifies upstream resolver(s) used for resolving services that point
to external hosts (eg. used to resolve CNAMEs). If no **ADDRESS** is given, CoreDNS will resolve
against itself. **ADDRESS** can be an IP, an IP:port or a path to a file structured like
resolv.conf (**NB**: Currently a bug (#2099) is preventing the use of self-resolver).
resolv.conf.
* `credentials` used for reading the credential file and setting the profile name for a given zone.
* **PROFILE** AWS account profile name. Defaults to `default`.
* **FILENAME** AWS credentials filename. Defaults to `~/.aws/credentials`
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*secondary* enables serving a zone retrieved from a primary serve
weight = 30
tags = [ "plugin", "secondary" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.650955"
date = "2018-11-06T07:19:41.756945"
+++
## Description
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*template* allows for dynamic responses based on the incoming que
weight = 31
tags = [ "plugin", "template" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.651236"
date = "2018-11-06T07:19:41.757275"
+++
## Description
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*tls* allows you to configure the server certificates for the TLS
weight = 32
tags = [ "plugin", "tls" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.651460"
date = "2018-11-06T07:19:41.757527"
+++
## Description
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*trace* enables OpenTracing-based tracing of DNS requests as they
weight = 33
tags = [ "plugin", "trace" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.651642"
date = "2018-11-06T07:19:41.757765"
+++
## Description
+1 -1
View File
@@ -4,7 +4,7 @@ description = "*whoami* returns your resolver's local IP address, port and trans
weight = 34
tags = [ "plugin", "whoami" ]
categories = [ "plugin" ]
date = "2018-10-17T18:39:57.651815"
date = "2018-11-06T07:19:41.757965"
+++
## Description
+1 -1
View File
@@ -1,2 +1,2 @@
[release]
version = "1.2.5"
version = "1.2.6"