Файл конфигурации
Полный пример конфигурационного файла YAML с комментариями смотрите в файле config.dist.yml.
dns
Объект dns настраивает поведение DNS-сервера. Он обладает следующими свойствами:
cache
Объект cache настраивает кеширование результатов запросов к DNS. Он обладает следующими свойствами:
enabled: следует ли кешировать результаты DNS.Пример:
truesize: максимальный размер кеша результатов DNS в виде удобочитаемых данных. Он должен быть больше нуля, еслиenabledравноtrue.Пример:
128 МБclient_size: максимальный размер кеша результатов DNS для каждого настроенного адреса клиента или подсети в виде удобочитаемых данных. Он должен быть больше нуля, еслиenabledравноtrue.Пример:
4 МБ
server
Объект server настраивает обработку входящих запросов. Он обладает следующими свойствами:
bind_retry: настройка механизма повторных попыток привязки к прослушиваемым адресам. Она нужна, когда сервер запускается доготовности сети, адреса ещё недоступны, как на некоторых версиях Windows при установке в качестве системного сервиса.noteЭтот объект доступен начиная с версии 0.0.3.
Он обладает следующими свойствами:
enabled: указывает, включена ли повторная попытка привязки или нет.Пример:
true'interval': интервал между повторными попытками в виде удобочитаемой продолжительности.
Example:
1scount: Максимальное количество попыток после первой неудачи. То есть, если значение переменнойcountравно 4, общее число попыток будет равно пяти.Пример:
4
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.Пример:
6060enabled: включено или нет профилирование отладки.Пример:
true
log
Объект log настраивает ведение журнала. Он обладает следующими свойствами:
'output': куда записываются логи.
noteЗаписываются в системный журнал в текстовом формате (см. ниже) и используют системную временную метку.
Возможные значения:
syslogозначает, что используется системный журнал, специфичный для конкретной платформы: syslog для Linux и Event Log для Windows.stdoutдля стандартного потока вывода.stderrдля стандартного потока ошибок.Абсолютный путь к файлу журнала.
Пример:
/home/user/logsПример:
C:\Users\user\logs.txtПример:
syslogformat: определяет формат записей журнала.Возможные значения:
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
Пример:
defaulttimestamp: указывает, включать ли временную метку в записях журнала.Пример:
falseverbose: указывает, должен ли журнал быть более информативным.Пример:
false