Zum Hauptinhalt springen

Konfigurationsdatei

See file config.dist.yml for a full example of a YAML configuration file with comments.

dns

Das Objekt dns konfiguriert das Verhalten des DNS-Servers. Es hat folgende Eigenschaften:

cache

Das Objekt cache konfiguriert das Zwischenspeichern der Ergebnisse von DNS-Abfragen. Es hat folgende Eigenschaften:

  • enabled: Legt fest, ob die DNS-Ergebnisse zwischengespeichert werden sollen oder nicht.

    Beispiel: true

  • size: Die maximale Größe des DNS-Ergebnis-Caches als für den Nutzer erfassbare Datengröße. Sie muss größer als Null sein, wenn enabled auf true steht.

    Beispiel: 128 MB

  • client_size: Die maximale Größe des DNS-Ergebnis-Caches für die Adresse oder das Subnetz eines jeden konfigurierten Clients in Form von für den Nutzer erfassbaren Daten. Sie muss größer als Null sein, wenn enabled auf true steht.

    Beispiel: 4 MB

server

Das Objekt server konfiguriert die Verarbeitung der eingehenden Anfragen. Es hat folgende Eigenschaften:

  • bind_retry: The configuration of the retry mechanism for binding to the listen addresses. Dies ist nützlich, wenn der Server gestartet wird, bevor das Netzwerk bereit ist und die Adressen noch nicht verfügbar sind, wie bei einigen Windows-Editionen, die als Systemdienst installiert werden.

    note

    Dieses Objekt ist seit v0.0.3 verfügbar.

    Es hat folgende Eigenschaften:

    • enabled: Gibt an, ob der Bindungswiederholungsversuch aktiviert ist oder nicht.

      Beispiel: true

    • interval: Gibt das Intervall zwischen den Wiederholungsversuchen in einer für den Menschen lesbaren Dauer an.

      Beispiel: 1s

    • count: Gibt die maximale Anzahl der Versuche nach dem ersten Fehlversuch an. Das heißt, wenn count 4 ist, beträgt die Gesamtzahl der Versuche fünf.

      Beispiel: 4

  • listen_addresses: Die Menge der Adressen mit den zu überwachenden Ports.

    Eigenschaftsbeispiel:

    'listen_addresses':
    - address: '127.0.0.1:53'
    - address: '[::1]:53'
  • pending_requests: Konfiguration für die Behandlung doppelter zeitgleicher Anfragen, die zur Abwehr von Cache-Poisoning-Angriffen verwendet wird.

    note

    Dieses Objekt ist seit v0.0.4 verfügbar.

    • enabled: Wenn dies zutrifft, führt der Server nur eine einzige Anfrage für jede einzelne Anfrage aus. Standardwert ist „true“.

      Beispiel: true

bootstrap

Das Objekt bootstrap konfiguriert die Auflösung von upstream Serveradressen. Es hat folgende Eigenschaften:

  • servers: Die Liste der Server, die die Hostnamen der Upstream-Server auflösen.

    Eigenschaftsbeispiel:

    'servers':
    - address: '8.8.8.8:53'
    - address: '192.168.1.1:53'
  • timeout: Die Zeitüberschreitung für Bootstrap-DNS-Anfragen in einer für den Nutzer erfassbaren Dauer.

    Beispiel: 2 s

upstream

Das Objekt upstream konfiguriert die eigentliche Auflösung von Anfragen. Es hat folgende Eigenschaften:

  • groups: Die Gruppe von Upstream-Servern, die durch den Gruppennamen gekennzeichnet sind. Es hat folgende Eigenschaften:

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

      Beispiel: '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.

      Es hat folgende Eigenschaften:

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

      Eigenschaftsbeispiel:

      'autodevice':
      - enabled: true
      - profile_id: 'defa5678'
      - device_type: 'lnx'
    • match: Die Liste der Kriterien, mit denen die Anfrage abgeglichen werden soll. Jeder Eintrag kann die folgenden Eigenschaften enthalten:

      • question_domain: Die Domain oder ein Suffix der Domain, die von der Gruppe der Upstream-Server aufgelöst werden soll.

        Beispiel: 'mycompany.local'

      • client: Die Adresse des Clients oder ein Teilnetz der Adresse des Clients, von dem aus die Gruppe der Upstream-Server Anfragen auflösen soll. Sie darf keine signifikanten Bits außerhalb der Subnetzmaske haben.

        Beispiel: '192.0.2.0/24'

      note

      Die in einem einzigen Eintrag angegebenen Eigenschaften werden mit einem logischen UND verknüpft. Die Eingaben werden mit einem logischen ODER kombiniert.

      Eigenschaftsbeispiel:

      'match':
      - question_domain: 'mycompany.local'
      client: '192.168.1.0/24'
      - question_domain: 'mycompany.external'
      - client: '1.2.3.4'
    info

    groups sollte mindestens einen einzelnen Eintrag namens default und optional einen einzelnen Eintrag namens private enthalten, beide sollten keine match Eigenschaft haben. 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.

    Die Gruppe default wird verwendet, wenn es keine Übereinstimmung mit anderen Gruppen gibt. Die Gruppe private wird verwendet, um die PTR-Anfragen für die privaten IP-Adressen aufzulösen. Solche Abfragen werden mit NXDOMAIN beantwortet, wenn keine Gruppe private definiert ist.

  • timeout: Die Zeitüberschreitung für vorgelagerte DNS-Anfragen in einer für den Nutzer erfassbaren Dauer.

    Beispiel: 2s

fallback

Das Objekt fallback konfiguriert das Verhalten des DNS-Servers im Falle eines Fehlers. Es hat folgende Eigenschaften:

  • server: Die Liste der Server, die verwendet werden sollen, nachdem der eigentliche upstream nicht geantwortet hat.

    Eigenschaftsbeispiel:

    'servers':
    - address: 'tls://94.140.14.140'
  • timeout: Die Zeitüberschreitung für Fallback-DNS-Anfragen in einer für den Nutzer erfassbaren Dauer.

    Beispiel: 2s

debug

Das Objekt debug konfiguriert die Debugging-Funktionen. Es hat folgende Eigenschaften:

pprof

Das Objekt pprof konfiguriert die pprof HTTP-Handler. Es hat folgende Eigenschaften:

  • port: Der Port, der auf Debug-HTTP-Anfragen auf localhost überwacht werden soll.

    Beispiel: 6060

  • enabled: Gibt an, ob die Debug-Profilerstellung aktiviert ist oder nicht.

    Beispiel: true

log

Das Objekt log konfiguriert die Protokollierung. Es hat folgende Eigenschaften:

  • output: Die Ausgabe, in die die Protokolle geschrieben werden.

    note

    Protokolleinträge, die in das Systemprotokoll geschrieben werden, haben das Format text (siehe unten) und verwenden den Zeitstempel des Systems.

    Mögliche Werte:

    • syslog bedeutet, dass das plattformspezifische Systemprotokoll verwendet wird, d. h. „syslog“ für Linux und „Ereignisprotokoll“ für Windows.

    • stdout für Standard-Ausgabe-Stream.

    • stderr für den Standard-Fehler-Stream.

    • Absoluter Pfad zur Protokolldatei.

    Beispiel: /home/user/logs

    Beispiel: C:\Users\user\logs.txt

    Beispiel: syslog

  • format: Gibt das Format der Protokolleinträge an.

    Mögliche Werte:

    • default: Ein einfaches Format. Beispiel:

      INFO service started prefix=program addr=127.0.0.1:53
    • json: Ein strukturiertes JSON-Format. Beispiel:

      {"level":"INFO","msg":"service started","prefix":"program","addr":"127.0.0.1:53"}
    • jsonhybrid: Identisch mit json, aber mit einer begrenzten Anzahl von Feldern. Beispiel:

      {"level":"INFO","msg":"service started, attrs: prefix=program addr=127.0.0.1:53"}
    • text: Ein strukturiertes Textformat. Beispiel:

      level=INFO msg="service started" prefix=program addr=127.0.0.1:53

    Standard: default

  • timestamp: Gibt an, ob ein Zeitstempel in die Protokolleinträge aufgenommen werden soll.

    Beispiel: false

  • verbose: Gibt an, ob das Protokoll mehr Informationen enthalten soll.

    Beispiel: false