* plugin/erratic: add axfr support Add support for axfr. This to fix and test long standing axfr issues that are hard to test if we don't support it directly in coredns. The most intriguing feature is withholding the last SOA from a response so the client needs to wait; drop (no reply) and delay is also supported. All TTLs are set to zero. Add simple tests that checks if first record is a SOA. Signed-off-by: Miek Gieben <miek@miek.nl> * more test coverage Signed-off-by: Miek Gieben <miek@miek.nl>
93 lines
1.8 KiB
Markdown
93 lines
1.8 KiB
Markdown
# erratic
|
|
|
|
## Name
|
|
|
|
*erratic* - a plugin useful for testing client behavior.
|
|
|
|
## Description
|
|
|
|
*erratic* returns a static response to all queries, but the responses can be delayed, dropped or truncated.
|
|
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)) 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.
|
|
|
|
## Syntax
|
|
|
|
~~~ txt
|
|
erratic {
|
|
drop [AMOUNT]
|
|
truncate [AMOUNT]
|
|
delay [AMOUNT [DURATION]]
|
|
}
|
|
~~~
|
|
|
|
* `drop`: drop 1 per **AMOUNT** of queries, the default is 2.
|
|
* `truncate`: truncate 1 per **AMOUNT** of queries, the default is 2.
|
|
* `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.
|
|
|
|
## Examples
|
|
|
|
~~~ corefile
|
|
. {
|
|
erratic {
|
|
drop 3
|
|
}
|
|
}
|
|
~~~
|
|
|
|
Or even shorter if the defaults suits you. Note this only drops queries, it does not delay them.
|
|
|
|
~~~ corefile
|
|
. {
|
|
erratic
|
|
}
|
|
~~~
|
|
|
|
Delay 1 in 3 queries for 50ms
|
|
|
|
~~~ corefile
|
|
. {
|
|
erratic {
|
|
delay 3 50ms
|
|
}
|
|
}
|
|
~~~
|
|
|
|
Delay 1 in 3 and truncate 1 in 5.
|
|
|
|
~~~ corefile
|
|
. {
|
|
erratic {
|
|
delay 3 5ms
|
|
truncate 5
|
|
}
|
|
}
|
|
~~~
|
|
|
|
Drop every second query.
|
|
|
|
~~~ corefile
|
|
. {
|
|
erratic {
|
|
drop 2
|
|
truncate 2
|
|
}
|
|
}
|
|
~~~
|
|
|
|
## Also See
|
|
|
|
[RFC 3849](https://tools.ietf.org/html/rfc3849) and
|
|
[RFC 5737](https://tools.ietf.org/html/rfc5737).
|