Перейти к основному содержанию

Файл конфигурации

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. If autodevice.enabled set to true for this group, the address should be a URL with one of https, tls, or quic scheme.

      Пример: '8.8.8.8:53'

    • autodevice: Represents an automatic connection of a device.

      note

      The 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.

        info

        The predefined private group must have enabled set 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'
    info

    groups должно содержать как минимум одну запись с именем default и, опционально, одну запись с именем private, у обеих записей не должно быть свойства match. The private group is also used to define the HumanID for clients created by autodevice feature. 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