Файл конфигурации
Полный пример конфигурационного файла YAML с комментариями смотрите в файле config.dist.yml
.
dns
Объект dns
настраивает поведение DNS-сервера. Он обладает следующими свойствами:
cache
Объект cache
настраивает кеширование результатов запросов к DNS. Он обладает следующими свойствами:
enabled
: следует ли кешировать результаты DNS.Пример:
true
size
: максимальный размер кеша результатов DNS в виде удобочитаемых данных. Он должен быть больше нуля, еслиenabled
равноtrue
.Пример:
128 МБ
client_size
: максимальный размер кеша результатов DNS для каждого настроенного адреса клиента или подсети в виде удобочитаемых данных. Он должен быть больше нуля, еслиenabled
равноtrue
.Пример:
4 МБ
server
Объект server
настраивает обработку входящих запросов. Он обладает следующими свойствами:
listen_addresses
: набор адресов с портами для прослушивания.Пример свойства:
'listen_addresses':
- address: '127.0.0.1:53'
- address: '[::1]:53'
bootstrap
Объект bootstrap
настраивает разрешение адресов серверов upstream. Он обладает следующими свойствами:
серверы
: список серверов для разрешения имён хостов upstream-серверов.Пример свойства:
'servers':
- address: '8.8.8.8:53'
- address: '192.168.1.1:53'timeout
: время ожидания для bootstrap DNS-запросов.Пример:
2 с
upstream
Объект upstream
настраивает фактическое разрешение запросов. Он обладает следующими свойствами:
groups
: набор upstream-серверов, связанных с именем группы. Он содержит следующие поля:address
: адрес upstream-сервера.Пример:
'8.8.8.8:53'
match
: список критериев для сопоставления запроса. Каждая запись может содержать следующие свойства:question_domain
: домен или суффикс домена, для разрешения которого должен использоваться набор upstream-серверов.Пример:
'mycompany.local'
client
: адрес клиента или подсеть адресов клиента, с которых набор upstream-серверов должен разрешать запросы. В нём не должно быть значащих битов за пределами маски подсети.Пример:
'192.0.2.0/24'
noteСвойства, указанные в одной записи, объединяются с помощью логического AND. Записи объединяются логическим OR.
Пример свойства:
'match':
- question_domain: 'mycompany.local'
client: '192.168.1.0/24'
- question_domain: 'mycompany.external'
- client: '1.2.3.4'
infogroups
должно содержать как минимум одну запись с именемdefault
и, опционально, одну запись с именемprivate
, у обеих записей не должно быть свойстваmatch
.Группа
default
будет использоваться, если нет совпадений среди других групп. Группаprivate
будет использоваться для разрешения PTR-запросов для частных IP-адресов. На такие запросы будет получен ответNXDOMAIN
, если не определена группаprivate
.timeout
: время ожидания для upstream DNS-запросов.Пример:
2 с
fallback
Объект fallback
настраивает поведение DNS-сервера в случае сбоя. Он обладает следующими свойствами:
servers
: список серверов, которые будут использоваться после того, как фактический upstream не смог ответить.Пример свойства:
'servers':
- address: 'tls://94.140.14.140'timeout
: время ожидания для fallback DNS-запросов.Пример:
2 с
debug
Объект debug
настраивает функции отладки. Он обладает следующими свойствами:
pprof
Объект pprof
настраивает HTTP-обработчики pprof
. Он обладает следующими свойствами:
port
: порт для прослушивания отладочных HTTP-запросов на localhost.Пример:
6060
enabled
: включено или нет профилирование отладки.Пример:
true
log
Объект log
настраивает ведение журнала. Он обладает следующими свойствами:
'output': куда записываются логи.
noteЗаписываются в системный журнал в текстовом формате (см. ниже) и используют системную временную метку.
Возможные значения:
syslog
означает, что используется системный журнал, специфичный для конкретной платформы: syslog для Linux и Event Log для Windows.stdout
для стандартного потока вывода.stderr
для стандартного потока ошибок.Абсолютный путь к файлу журнала.
Пример:
/home/user/logs
Пример:
C:\Users\user\logs.txt
Пример:
syslog
format
: определяет формат записей журнала.Возможные значения:
default
: простой формат. Пример:INFO service started prefix=program addr=127.0.0.1:53
'json': структурированный формат JSON. Пример:
{"level":"INFO","msg":"service started","prefix":"program","addr":"127.0.0.1:53"}
jsonhybrid
: то же, чтоjson
, но с ограниченным количеством полей. Пример:{"level":"INFO","msg":"service started, attrs: prefix=program addr=127.0.0.1:53"}
text
: структурированный текстовый формат. Пример:level=INFO msg="service started" prefix=program addr=127.0.0.1:53
Пример:
default
timestamp
: указывает, включать ли временную метку в записях журнала.Пример:
false
verbose
: указывает, должен ли журнал быть более информативным.Пример:
false