# unbound templates/unbound.conf.j2 - {{ ansible_managed }}
# docs: https://www.nlnetlabs.nl/documentation/unbound/unbound.conf
{#
SPDX-FileCopyrightText: © 2020 Open Networking Foundation <support@opennetworking.org>
SPDX-License-Identifier: Apache-2.0
#}

# general config
server:
  port: 53
  do-ip4: yes
  do-ip6: no
  do-udp: yes
  do-tcp: yes

  # logging
  verbosity: 1

  # caching overrides
  # Cache SERVFAIL for less time (normally 900s)
  infra-host-ttl: 10
{% if ansible_distribution_version not in ["18.04", "20.04"] %}
  # keep probing failed hosts, in case of network issues
  infra-keep-probing: yes
{% endif %}
  # Maximum TTL on NXDOMAIN queries (normally set by upstream)
  cache-max-negative-ttl: 60

  # RFC7816 query name minimization
  qname-minimisation: yes

  # access control
{% if unbound_allow_all %}
  # allow queries from everywhere
  access-control: 0.0.0.0/0 allow
{% else %}
  # allow queries from localhost
  access-control: 127.0.0.0/24 allow
{% if unbound_allow_ips %}
  # listen on specific IPs
{% for ip in unbound_allow_ips %}
  access-control: {{ ip }} allow
{% endfor %}
{% endif %}
{% endif %}

  # listening interfaces
{% if unbound_listen_default %}
  # listen on default IPv4 Address
  interface: {{ ansible_default_ipv4.address }}

{% endif %}
{% if unbound_listen_ips %}
  # listen on specific IPs
{% for ip in unbound_listen_ips %}
  interface: {{ ip | ipaddr('address') }}
{% endfor %}

{% endif %}
  # disable DNS-over-HTTP (DoH) as it breaks split horizon
  # https://support.mozilla.org/en-US/kb/configuring-networks-disable-dns-over-https
  # https://support.mozilla.org/en-US/kb/canary-domain-use-application-dnsnet
  local-zone: "use-application-dns.net" always_nxdomain

{% if dns_reverse_zones %}
  # allow reverse queries for RFC1918 addresses, per dns_reverse_zones
  {% for key, value in dns_reverse_zones.items() -%}
  local-zone: "{{ key | ipaddr('network') | unbound_revdns }}" nodefault
  {% endfor %}
{% endif %}
{% if unbound_reverse_zones %}
  # allow reverse queries for RFC1918 addresses, per unbound_reverse_zones
  {% for urz in unbound_reverse_zones -%}
  local-zone: "{{ urz | ipaddr('network') | unbound_revdns }}" nodefault
  {% endfor %}
{% endif %}

# allow unbound to query localhost, where authoritative DNS might be listening
do-not-query-localhost: no

# zone definitions
{% if dns_reverse_zones %}
# reverse zones created by dns_reverse_zones
{% for key, value in dns_reverse_zones.items() %}
stub-zone:
  name: "{{ key | ipaddr('network') | unbound_revdns }}"
  stub-addr: {{ unbound_authoritative_server_ip }}

{% endfor %}
{% endif %}
{% if dns_forward_zones %}
# forward zones created by dns_forward_zones
{% for key, value in dns_forward_zones.items() %}
stub-zone:
  name: "{{ key }}"
  stub-addr: {{ unbound_authoritative_server_ip }}

{% endfor %}
{% endif %}

{% if unbound_forward_zones %}
# Forward zones created by: unbound_forward_zones
{% for fz in unbound_forward_zones %}
forward-zone:
  name: "{{ fz.name | default('.') }}"
{% for fza in fz.servers %}
  forward-addr: {{ fza }}
{% endfor %}
{% endfor %}
{% endif %}
