1.2.1 release (#110)

Signed-off-by: Miek Gieben <miek@miek.nl>
This commit is contained in:
Miek Gieben 2018-08-28 07:18:02 +01:00 committed by GitHub
parent e8af22cb8f
commit 2be83e89e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
36 changed files with 210 additions and 69 deletions

View File

@ -0,0 +1,41 @@
+++
title = "CoreDNS-1.2.1 Release"
description = "CoreDNS-1.2.1 Release Notes."
tags = ["Release", "1.2.1", "Notes"]
release = "1.2.1"
date = "2018-08-28T07:10:29+01:00"
author = "coredns"
+++
We are pleased to announce the [release](https://github.com/coredns/coredns/releases/tag/v1.2.1) of
CoreDNS-1.2.1!
This release features bugfixes (mostly in the [*kubernetes*](/plugins/kubernetes) plugin,
documentation improvements and one new plugin: [*loop*](/plugin/loop).
# Plugins
* A new plugin called [*loop*](/plugins/loop) was added. When starting up it detects resolver loops
and stops the process if one is detected.
## Contributors
The following people helped with getting this release done. Good to see a whole bunch of new names,
as well as the usual suspects:
Bingshen Wang,
Chris O'Haver,
Eugen Kleiner,
Francois Tur,
Jiacheng Xu,
Karsten Weiss,
Lorenzo Fontana,
Miek Gieben,
Nitish Tiwari,
Stanislav Zapolsky,
varyoo,
Yong Tang,
Zach Eddy.
For documentation see our (in progress!) [manual](/manual). For help and other resources, see our
[community page](https://coredns.io/community/).

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-07-11T10:14:28.424385"
date = "2018-08-28T06:15:01.551450"
+++
## Description
@ -27,7 +27,7 @@ auto [ZONES...] {
**ZONES** zones it should be authoritative for. If empty, the zones from the configuration block
are used.
* `directory` loads zones from the speficied **DIR**. If a file name matches **REGEXP** it will be
* `directory` loads zones from the specified **DIR**. If a file name matches **REGEXP** it will be
used to extract the origin. **ORIGIN_TEMPLATE** will be used as a template for the origin. Strings
like `{<number>}` are replaced with the respective matches in the file name, e.g. `{1}` is the
first match, `{2}` is the second. The default is: `db\.(.*) {1}` i.e. from a file with the

View File

@ -4,7 +4,7 @@ description = "*autopath* allows for server-side search path completion."
weight = 2
tags = [ "plugin", "autopath" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.425144"
date = "2018-08-28T06:15:01.551825"
+++
## Description

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-07-11T10:14:28.425729"
date = "2018-08-28T06:15:01.552149"
+++
## Description

View File

@ -4,7 +4,7 @@ description = "*cache* enables a frontend cache."
weight = 4
tags = [ "plugin", "cache" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.426487"
date = "2018-08-28T06:15:01.552421"
+++
## Description

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-07-11T10:14:28.427215"
date = "2018-08-28T06:15:01.552698"
+++
## Description

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-07-11T10:14:28.427875"
date = "2018-08-28T06:15:01.552942"
+++
## Description

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-07-11T10:14:28.428601"
date = "2018-08-28T06:15:01.553261"
+++
## Description

View File

@ -4,7 +4,7 @@ description = "*dnstap* enable logging to dnstap."
weight = 8
tags = [ "plugin", "dnstap" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.429310"
date = "2018-08-28T06:15:01.553539"
+++
## Description

View File

@ -4,7 +4,7 @@ description = "*erratic* a plugin useful for testing client behavior."
weight = 9
tags = [ "plugin", "erratic" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.430017"
date = "2018-08-28T06:15:01.553796"
+++
## Description
@ -13,7 +13,8 @@ date = "2018-07-11T10:14:28.430017"
The *erratic* plugin will respond to every A or AAAA query. For any other type it will return
a SERVFAIL response. The reply for A will return 192.0.2.53 (see [RFC
5737](https://tools.ietf.org/html/rfc5737),
for AAAA it returns 2001:DB8::53 (see [RFC 3849](https://tools.ietf.org/html/rfc3849)).
for AAAA it returns 2001:DB8::53 (see [RFC 3849](https://tools.ietf.org/html/rfc3849)) and for an
AXFR request it will respond with a small zone transfer.
*erratic* can also be used in conjunction with the *autopath* plugin. This is mostly to aid in
testing.
@ -33,6 +34,8 @@ erratic {
* `delay`: delay 1 per **AMOUNT** of queries for **DURATION**, the default for **AMOUNT** is 2 and
the default for **DURATION** is 100ms.
In case of a zone transfer and truncate the final SOA record *isn't* added to the response.
## Health
This plugin implements dynamic health checking. For every dropped query it turns unhealthy.

View File

@ -4,7 +4,7 @@ description = "*errors* enable error logging."
weight = 10
tags = [ "plugin", "errors" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.430602"
date = "2018-08-28T06:15:01.554012"
+++
## Description

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-07-11T10:14:28.431331"
date = "2018-08-28T06:15:01.554420"
+++
## Description
@ -65,13 +65,19 @@ etcd [ZONES...] {
## Special Behaviour
CoreDNS etcd plugin leverages directory structure to look for related entries. For example an entry `/skydns/test/skydns/mx` would have entries like `/skydns/test/skydns/mx/a`, `/skydns/test/skydns/mx/b` and so on. Similarly a directory `/skydns/test/skydns/mx1` will have all `mx1` entries.
With etcd3, support for [hierarchial keys are dropped](https://coreos.com/etcd/docs/latest/learning/api.html). This means there are no directories but only flat keys with prefixes in etcd3. To accomodate lookups, etcdv3 plugin now does a lookup on prefix `/skydns/test/skydns/mx/` to search for entries like `/skydns/test/skydns/mx/a` etc, and if there is nothing found on `/skydns/test/skydns/mx/`, it looks for `/skydns/test/skydns/mx` to find entries like `/skydns/test/skydns/mx1`.
With etcd3, support for [hierarchial keys are dropped](https://coreos.com/etcd/docs/latest/learning/api.html). This means there are no directories but only flat keys with prefixes in etcd3. To accommodate lookups, etcdv3 plugin now does a lookup on prefix `/skydns/test/skydns/mx/` to search for entries like `/skydns/test/skydns/mx/a` etc, and if there is nothing found on `/skydns/test/skydns/mx/`, it looks for `/skydns/test/skydns/mx` to find entries like `/skydns/test/skydns/mx1`.
This causes two lookups from CoreDNS to etcdv3 in certain cases.
## Migration to `etcdv3` API
With CoreDNS release `1.2.0`, you'll need to migrate existing CoreDNS related data (if any) on your etcd server to etcdv3 API. This is because with `etcdv3` support, CoreDNS can't see the data stored to an etcd server using `etcdv2` API.
Refer this [blog by CoreOS team](https://coreos.com/blog/migrating-applications-etcd-v3.html) to migrate to etcdv3 API.
## Examples
This is the default SkyDNS setup, with everying specified in full:
This is the default SkyDNS setup, with everything specified in full:
~~~ corefile
. {
@ -110,6 +116,9 @@ etcd skydns.local {
...
~~~
Before getting started with these examples, please setup `etcdctl` (with `etcdv3` API) as explained [here](https://coreos.com/etcd/docs/latest/dev-guide/interacting_v3.html). This will help you to put sample keys in your etcd server.
If you prefer, you can use `curl` to populate the `etcd` server, but with `curl` the endpoint URL depends on the version of `etcd`. For instance, `etcd v3.2` or before uses only [CLIENT-URL]/v3alpha/* while `etcd v3.5` or later uses [CLIENT-URL]/v3/* . Also, Key and Value must be base64 encoded in the JSON payload. With, `etcdctl` these details are automatically taken care off. You can check [this document](https://github.com/coreos/etcd/blob/master/Documentation/dev-guide/api_grpc_gateway.md#notes) for details.
### Reverse zones
@ -127,8 +136,7 @@ Next you'll need to populate the zone with reverse records, here we add a revers
10.0.0.127 pointing to reverse.skydns.local.
~~~
% curl -XPUT http://127.0.0.1:4001/v2/keys/skydns/arpa/in-addr/10/0/0/127 \
-d value='{"host":"reverse.skydns.local."}'
% etcdctl put /skydns/arpa/in-addr/10/0/0/127 '{"host":"reverse.skydns.local."}'
~~~
Querying with dig:
@ -143,7 +151,7 @@ reverse.skydns.local.
The zone name itself can be used A record. This behavior can be achieved by writing special entries to the ETCD path of your zone. If your zone is named `skydns.local` for example, you can create an `A` record for this zone as follows:
~~~
% curl -XPUT http://127.0.0.1:2379/v2/keys/skydns/local/skydns/dns/apex -d value='{"host":"1.1.1.1","ttl":"60"}'
% etcdctl put /skydns/local/skydns/ '{"host":"1.1.1.1","ttl":60}'
~~~
If you query the zone name itself, you will receive the created `A` record:
@ -155,27 +163,57 @@ If you query the zone name itself, you will receive the created `A` record:
If you would like to use DNS RR for the zone name, you can set the following:
~~~
% curl -XPUT http://127.0.0.1:2379/v2/keys/skydns/local/skydns/dns/apex/x1 -d value='{"host":"1.1.1.1","ttl":"60"}'
% curl -XPUT http://127.0.0.1:2379/v2/keys/skydns/local/skydns/dns/apex/x2 -d value='{"host":"1.1.1.2","ttl":"60"}'
% etcdctl put /skydns/local/skydns/x1 '{"host":"1.1.1.1","ttl":"60"}'
% etcdctl put /skydns/local/skydns/x2 '{"host":"1.1.1.2","ttl":"60"}'
~~~
If you query the zone name now, you will get the following response:
~~~ sh
dig +short skydns.local @localhost
% dig +short skydns.local @localhost
1.1.1.1
1.1.1.2
~~~
### Zone name as AAAA record
If you would like to use `AAAA` records for the zone name too, you can set the following:
~~~
% curl -XPUT http://127.0.0.1:2379/v2/keys/skydns/local/skydns/dns/apex/x3 -d value='{"host":"2003::8:1","ttl":"60"}'
% curl -XPUT http://127.0.0.1:2379/v2/keys/skydns/local/skydns/dns/apex/x4 -d value='{"host":"2003::8:2","ttl":"60"}'
% etcdctl put /skydns/local/skydns/x3 '{"host":"2003::8:1","ttl":"60"}'
% etcdctl put /skydns/local/skydns/x4 '{"host":"2003::8:2","ttl":"60"}'
~~~
If you query the zone name now for `AAAA` now, you will get the following response:
If you query the zone name for `AAAA` now, you will get the following response:
~~~ sh
dig +short skydns.local AAAA @localhost
% dig +short skydns.local AAAA @localhost
2003::8:1
2003::8:2
~~~
### SRV record
If you would like to use `SRV` records, you can set the following:
~~~
% etcdctl put /skydns/local/skydns/x5 '{"host":"skydns-local.server","ttl":60,"priority":10,"port":8080}'
~~~
Please notice that the key `host` is the `target` in `SRV`, so it should be a domain name.
If you query the zone name for `SRV` now, you will get the following response:
~~~ sh
% dig +short skydns.local SRV @localhost
10 100 8080 skydns-local.server.
~~~
### TXT record
If you would like to use `TXT` records, you can set the following:
~~~
% etcdctl put /skydns/local/skydns/x6 '{"ttl":60,"text":"this is a random text message."}'
~~~
If you query the zone name for `TXT` now, you will get the following response:
~~~ sh
% dig +short skydns.local TXT @localhost
"this is a random text message."
~~~

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-07-11T10:14:28.431929"
date = "2018-08-28T06:15:01.554774"
+++
## Description

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-07-11T10:14:28.432522"
date = "2018-08-28T06:15:01.555057"
+++
## Description

View File

@ -4,7 +4,7 @@ description = "*forward* facilitates proxying DNS messages to upstream resolvers
weight = 14
tags = [ "plugin", "forward" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.433274"
date = "2018-08-28T06:15:01.555374"
+++
## Description

View File

@ -4,7 +4,7 @@ description = "*health* enables a health check endpoint."
weight = 15
tags = [ "plugin", "health" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.433874"
date = "2018-08-28T06:15:01.555655"
+++
## Description

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-07-11T10:14:28.434480"
date = "2018-08-28T06:15:01.555923"
+++
## Description

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-07-11T10:14:28.435188"
date = "2018-08-28T06:15:01.556292"
+++
## Description
@ -70,7 +70,7 @@ kubernetes [ZONES...] {
* `disabled`: Default. Do not process pod requests, always returning `NXDOMAIN`
* `insecure`: Always return an A record with IP from request (without checking k8s). This option
is is vulnerable to abuse if used maliciously in conjunction with wildcard SSL certs. This
is vulnerable to abuse if used maliciously in conjunction with wildcard SSL certs. This
option is provided for backward compatibility with kube-dns.
* `verified`: Return an A record if there exists a pod in same namespace with matching IP. This
option requires substantially more memory than in insecure mode, since it will maintain a watch
@ -95,9 +95,10 @@ kubernetes [ZONES...] {
* `noendpoints` will turn off the serving of endpoint records by disabling the watch on endpoints.
All endpoint queries and headless service queries will result in an NXDOMAIN.
* `transfer` enables zone transfers. It may be specified multiples times. `To` signals the direction
(only `to` is alllow). **ADDRESS** must be denoted in CIDR notation (127.0.0.1/32 etc.) or just as
(only `to` is allow). **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.
Sending DNS notifies is not supported.
[Deprecated](https://github.com/kubernetes/dns/blob/master/docs/specification.md#26---deprecated-records) pod records in the sub domain `pod.cluster.local` are not transferred.
* `fallthrough` **[ZONES...]** If a query for a record in the zones for which the plugin is authoritative
results in NXDOMAIN, normally that is what the response will be. However, if you specify this option,
the query will instead be passed on down the plugin chain, which can include another plugin to handle

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-07-11T10:14:28.435776"
date = "2018-08-28T06:15:01.556548"
+++
## Description

View File

@ -4,7 +4,7 @@ description = "*log* enables query logging to standard output."
weight = 19
tags = [ "plugin", "log" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.436410"
date = "2018-08-28T06:15:01.556838"
+++
## Description

50
content/plugins/loop.md Normal file
View File

@ -0,0 +1,50 @@
+++
title = "loop"
description = "*loop* detect simple forwarding loops and halt the server."
weight = 20
tags = [ "plugin", "loop" ]
categories = [ "plugin" ]
date = "2018-08-28T06:15:01.557080"
+++
## Description
The *loop* plugin will send a random query to ourselves and will then keep track of how many times
we see it. If we see it more than twice, we assume CoreDNS is looping and we halt the process.
The plugin will try to send the query for up to 30 seconds. This is done to give CoreDNS enough time
to start up. Once a query has been successfully sent *loop* disables itself to prevent a query of
death.
The query sent is `<random number>.<random number>.zone` with type set to HINFO.
## Syntax
~~~ txt
loop
~~~
## Examples
Start a server on the default port and load the *loop* and *forward* plugins. The *forward* plugin
forwards to it self.
~~~ txt
. {
loop
forward . 127.0.0.1
}
~~~
After CoreDNS has started it stops the process while logging:
~~~ txt
plugin/loop: Seen "HINFO IN 5577006791947779410.8674665223082153551." more than twice, loop detected
~~~
## Limitations
This plugin only attempts to find simple static forwarding loops at start up time. To detect a loop, all of the following must be true
* the loop must be present at start up time.
* the loop must occur for at least the `HINFO` query type.

View File

@ -1,10 +1,10 @@
+++
title = "metadata"
description = "*metadata* enable a meta data collector."
weight = 20
weight = 21
tags = [ "plugin", "metadata" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.436996"
date = "2018-08-28T06:15:01.557285"
+++
## Description

View File

@ -1,10 +1,10 @@
+++
title = "prometheus"
description = "*prometheus* enables [Prometheus](https://prometheus.io/) metrics."
weight = 21
weight = 22
tags = [ "plugin", "metrics" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.437584"
date = "2018-08-28T06:15:01.557531"
+++
## Description
@ -63,7 +63,7 @@ Use an alternative address:
}
~~~
Or via an enviroment variable (this is supported throughout the Corefile): `export PORT=9253`, and
Or via an environment variable (this is supported throughout the Corefile): `export PORT=9253`, and
then:
~~~ corefile

View File

@ -1,10 +1,10 @@
+++
title = "nsid"
description = "*nsid* adds an identifier of this server to each reply."
weight = 22
weight = 23
tags = [ "plugin", "nsid" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.438164"
date = "2018-08-28T06:15:01.557802"
+++
## Description

View File

@ -1,10 +1,10 @@
+++
title = "pprof"
description = "*pprof* publishes runtime profiling data at endpoints under `/debug/pprof`."
weight = 23
weight = 24
tags = [ "plugin", "pprof" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.438769"
date = "2018-08-28T06:15:01.558073"
+++
## Description

View File

@ -1,10 +1,10 @@
+++
title = "proxy"
description = "*proxy* facilitates both a basic reverse proxy and a robust load balancer."
weight = 24
weight = 25
tags = [ "plugin", "proxy" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.439352"
date = "2018-08-28T06:15:01.558378"
+++
## Description
@ -102,7 +102,7 @@ If monitoring is enabled (via the *prometheus* directive) then the following met
Where `proxy_proto` is the protocol used (`dns` or `grpc`) and `to` is **TO**
specified in the config, `proto` is the protocol used by the incoming query ("tcp" or "udp"), family
the transport family ("1" for IPv4, and "2" for IPv6). `Server` is the server responsible for the
request (and metric). See the documention in the metrics plugin.
request (and metric). See the documentation in the metrics plugin.
## Examples

View File

@ -1,10 +1,10 @@
+++
title = "reload"
description = "*reload* allows automatic reload of a changed Corefile."
weight = 25
weight = 26
tags = [ "plugin", "reload" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.439963"
date = "2018-08-28T06:15:01.558628"
+++
## Description
@ -87,7 +87,7 @@ is already listening on that port. The process reloads and performs the followin
3. fail to start a new listener on 443
4. fail loading the new Corefile, abort and keep using the old process
After the aborted attempt to reload we are left with the old proceses running, but the listener is
After the aborted attempt to reload we are left with the old processes running, but the listener is
closed in step 1; so the health endpoint is broken. The same can hopen in the prometheus metrics plugin.
In general be careful with assigning new port and expecting reload to work fully.

View File

@ -1,10 +1,10 @@
+++
title = "rewrite"
description = "*rewrite* performs internal message rewriting."
weight = 26
weight = 27
tags = [ "plugin", "rewrite" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.440802"
date = "2018-08-28T06:15:01.558999"
+++
## Description
@ -24,7 +24,8 @@ rewrite [continue|stop] FIELD FROM TO
* `type` - the type field of the request will be rewritten. FROM/TO must be a DNS record type (`A`, `MX`, etc);
e.g., to rewrite ANY queries to HINFO, use `rewrite type ANY HINFO`.
* `class` - the class of the message will be rewritten. FROM/TO must be a DNS class type (`IN`, `CH`, or `HS`) e.g., to rewrite CH queries to IN use `rewrite class CH IN`.
* `name` - the query name in the _request_ is rewritten; by default this is a full match of the name, e.g., `rewrite name miek.nl example.org`. Other match types are supported, see the **Name Field Rewrites** section below.
* `name` - the query name in the _request_ is rewritten; by default this is a full match of the
name, e.g., `rewrite name example.net example.org`. Other match types are supported, see the **Name Field Rewrites** section below.
* `answer name` - the query name in the _response_ is rewritten. This option has special restrictions and requirements, in particular it must always combined with a `name` rewrite. See below in the **Response Rewrites** section.
* `edns0` - an EDNS0 option can be appended to the request as described below in the **EDNS0 Options** section.
@ -41,7 +42,8 @@ for not specifying this rule processing mode is `stop`
The `rewrite` plugin offers the ability to match on the name in the question section of
a DNS request. The match could be exact, substring, or based on a prefix, suffix, or regular
expression.
expression. If the newly used name is not a legal domain name the plugin returns an error to the
client.
The syntax for the name re-writing is as follows:
@ -222,6 +224,12 @@ Examples:
rewrite edns0 local set 0xffee {client_ip}
~~~
The following example rewrites the `schmoogle.com` suffix to `google.com`.
~~~
rewrite name suffix .schmoogle.com. .google.com.
~~~
The following example uses metadata and an imaginary "some-plugin" that would provide "some-label" as metadata information.
~~~

View File

@ -1,10 +1,10 @@
+++
title = "root"
description = "*root* simply specifies the root of where to find (zone) files."
weight = 27
weight = 28
tags = [ "plugin", "root" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.441359"
date = "2018-08-28T06:15:01.559216"
+++
## Description

View File

@ -1,10 +1,10 @@
+++
title = "route53"
description = "*route53* enables serving zone data from AWS route53."
weight = 28
weight = 29
tags = [ "plugin", "route53" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.441925"
date = "2018-08-28T06:15:01.559424"
+++
## Description

View File

@ -1,10 +1,10 @@
+++
title = "secondary"
description = "*secondary* enables serving a zone retrieved from a primary server."
weight = 29
weight = 30
tags = [ "plugin", "secondary" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.442483"
date = "2018-08-28T06:15:01.559667"
+++
## Description

View File

@ -1,10 +1,10 @@
+++
title = "template"
description = "*template* allows for dynamic responses based on the incoming query."
weight = 30
weight = 31
tags = [ "plugin", "template" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.443265"
date = "2018-08-28T06:15:01.560029"
+++
## Description

View File

@ -1,10 +1,10 @@
+++
title = "tls"
description = "*tls* allows you to configure the server certificates for the TLS and gRPC servers."
weight = 31
weight = 32
tags = [ "plugin", "tls" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.443905"
date = "2018-08-28T06:15:01.560282"
+++
## Description

View File

@ -1,10 +1,10 @@
+++
title = "trace"
description = "*trace* enables OpenTracing-based tracing of DNS requests as they go through the plugin chain."
weight = 32
weight = 33
tags = [ "plugin", "trace" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.444491"
date = "2018-08-28T06:15:01.560516"
+++
## Description

View File

@ -1,10 +1,10 @@
+++
title = "whoami"
description = "*whoami* returns your resolver's local IP address, port and transport."
weight = 33
weight = 34
tags = [ "plugin", "whoami" ]
categories = [ "plugin" ]
date = "2018-07-11T10:14:28.445039"
date = "2018-08-28T06:15:01.560693"
+++
## Description

View File

@ -1,2 +1,2 @@
[release]
version = "1.2.0"
version = "1.2.1"