Файл конфигурации
See file config.dist.yml for a full example of a YAML configuration file with comments.
dns
Объект dns настраивает поведение DNS-сервера. Он обладает следующими свойствами:
cache
Объект cache настраивает кеширование результатов запросов к DNS. Он обладает следующими свойствами:
-
enabled: следует ли кешировать результаты DNS.Пример:
true -
size: максимальный размер кеша результатов DNS в виде удобочитаемых данных. Он должен быть больше нуля, еслиenabledравноtrue.Пример:
128 МБ -
client_size: максимальный размер кеша результатов DNS для каждого настроенного адреса клиента или подсети в виде удобочитаемых данных. Он должен быть больше нуля, еслиenabledравноtrue.Пример:
4 МБ
server
Объект server настраивает обработку входящих запросов. Он обладает следующими свойствами:
-
bind_retry: The configuration of the retry mechanism for binding to the listen addresses. Она нужна, когда сервер запускается доготовности сети, адреса ещё недоступны, как на некоторых версиях Windows при установке в качестве системного сервиса.noteЭтот объект доступен начиная с версии 0.0.3.
Он обладает следующими свойствами:
-
enabled: указывает, включена ли повторная попытка привязки или нет.Пример:
true -
'interval': интервал между повторными попытками в виде удобочитаемой продолжительности.
Example:
1s -
count: Максимальное количество попыток после первой неудачи. То есть, если значение переменнойcountравно 4, общее число попыток будет равно пяти.Пример:
4
-
-
listen_addresses: набор адресов с портами для прослушивания.Пример свойства:
'listen_addresses':- address: '127.0.0.1:53'- address: '[::1]:53' -
pending_requests: конфигурация для обработки дублирующихся одновременных запросов, используемая для смягчения атак отравления кеша.noteЭтот объект доступен начиная с версии 0.0.4.
-
enabled: если значение равно true, сервер будет выполнять только один запрос для каждого уникального вопроса. По умолчанию значение равно true.Пример:
true
-
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: The upstream server’s address. Ifautodevice.enabledset totruefor this group, the address should be a URL with one ofhttps,tls, orquicscheme.Пример:
'8.8.8.8:53' -
autodevice: Represents an automatic connection of a device.noteThe autodevice option must be used only for AdGuard DNS upstreams. Otherwise, we can’t guarantee proper work.
Он обладает следующими свойствами:
-
enabled: Defines whether all clients within the current group can be connected automatically.infoThe predefined
privategroup must haveenabledset to false, as it doesn't support autodevice yet. -
profile_id: ID of a profile, in which new devices will be added. -
device_type: A type of device which will be created for new clients.
Пример свойства:
'autodevice':- enabled: true- profile_id: 'defa5678'- device_type: 'lnx' -
-
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. Theprivategroup is also used to define the HumanID for clients created byautodevicefeature. If it is not defined, an alternative generation method is used, whereby the HumanID is formed from the IP address.Группа
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