2021-07-15 09:32:39 +02:00
# header
## Name
2022-08-12 13:46:06 +02:00
*header* - modifies the header for queries and responses.
2021-07-15 09:32:39 +02:00
## Description
2022-08-12 13:46:06 +02:00
*header* ensures that the flags are in the desired state for queries and responses.
The modifications are made transparently for the client and subsequent plugins.
2021-07-15 09:32:39 +02:00
## Syntax
~~~
header {
2022-08-12 13:46:06 +02:00
[SELECTOR] ACTION FLAGS...
[SELECTOR] ACTION FLAGS...
2021-07-15 09:32:39 +02:00
}
~~~
2022-08-12 13:46:06 +02:00
* **SELECTOR** defines if the action should be applied on `query` or `response` . In future CoreDNS version the selector will be mandatory. For backwards compatibility the action will be applied on `response` if the selector is undefined.
2021-07-15 10:10:16 +02:00
* **ACTION** defines the state for DNS message header flags. Actions are evaluated in the order they are defined so last one has the
2021-07-15 09:32:39 +02:00
most precedence. Allowed values are:
* `set`
* `clear`
2021-07-15 10:10:16 +02:00
* **FLAGS** are the DNS header flags that will be modified. Current supported flags include:
* `aa` - Authoritative(Answer)
2021-07-15 09:32:39 +02:00
* `ra` - RecursionAvailable
* `rd` - RecursionDesired
## Examples
Make sure recursive available `ra` flag is set in all the responses:
~~~ corefile
. {
header {
2022-08-12 13:46:06 +02:00
response set ra
2021-07-15 09:32:39 +02:00
}
}
~~~
2021-07-15 10:10:16 +02:00
Make sure "recursion available" `ra` and "authoritative answer" `aa` flags are set and "recursion desired" is cleared in all responses:
2021-07-15 09:32:39 +02:00
~~~ corefile
. {
header {
2022-08-12 13:46:06 +02:00
response set ra aa
response clear rd
}
}
~~~
Make sure "recursion desired" `rd` is set for all subsequent plugins::
~~~ corefile
. {
header {
query set rd
2021-07-15 09:32:39 +02:00
}
}
~~~