Установка кэширующего DNS сервера Unbound на Debian

Материал из support.qbpro.ru

1. Установка:

apt-get install unbound unbound-anchor unbound-host 

2. Добавляем актуальный перечень корневых DNS-серверов

wget -c ftp://ftp.internic.net/domain/named.cache -O db.root

4. Настраиваем конфигурационный файл сервера:

* Пример рабочего конфиг-файла:

# Unbound configuration file for Debian.
#
# See the unbound.conf(5) man page.
#
# See /usr/share/doc/unbound/examples/unbound.conf for a commented
# reference config file.
#
# The following line includes additional configuration files from the
# /etc/unbound/unbound.conf.d directory.
include: "/etc/unbound/unbound.conf.d/*.conf"

###
# открываем секцию server
server:
    # Зависит от конфигурации других резолверов - может мешать, может нет.
    # Лучше выключить.
    # для ссылок на другие домены лучше использовать stub-zone. 
    #
    module-config: iterator
    # Используемые для управления ресурсы
    directory: "/etc/unbound"
    pidfile: "/var/run/unbound.pid"

    # Имя пользователя, от которого запускается сервис
    username: unbound
    
    # Запускаем в несколько потоков (по одному на ядро процессора)
    num-threads: 2

    # Включаем оптимизацию быстрого перераспределения ресурсов
    so-reuseport: yes
        
    # Уточняем перечень протоколов, с которыми работаем
    do-ip4: yes
    do-ip6: no
    do-udp: yes
    do-tcp: yes

    # разрешаем подключения только с localhost-а
    #access-control: 127.0.0.0/8 allow
    access-control: 127.0.0.0/8 allow                                                                                        
    access-control: 10.5.1.0/24 allow      # Service LAN                                                                    
                                                                                             
                                                                                                                              
    # слушать внешние интерфейсы смысла тоже нет.                                                                             
    port: 53                                                                                                                  
    # interface: 0.0.0.0
    interface: 127.0.0.1
    interface: 10.5.1.5                                                                                                        

    # запись с ttl больше 14400 секунд в кеш записываем с ttl равным 14400
    cache-max-ttl: 14400

    # запись с ttl меньше 60 секунд записываем в кэш с ttl равным 60 секунду
    cache-min-ttl: 60

    # Скрываем то, что у нас unbound и его версию.
    hide-identity: yes
    hide-version: yes

    # если в них нет необходимости, то unbound убирает из своего ответа информацию о NS-серверах домена. Чуть увеличивает скорость и уменьшает трафик (если в unbound ходим по сети).
    minimal-responses: yes

    # Эта опция включает обновление записей в кэше в фоне, ради неё мы всё и затеяли.
    prefetch: yes

    # снижаем количество информации, которую unbound отправляет на чужие NS в своих исходящих запросах.
    qname-minimisation: yes

    # unbound будет отдавать записи одного типа (если их несколько, т.н. round-robin) в случайном порядке.
    rrset-roundrobin: yes

    # приводит все ответы сервера (и записи в кэше) к нижнему регистру
    use-caps-for-id: yes

    # включает хождение наружу по tcp. Я пытался использовать её совместно с "do-udp no", но без форварда вместе они работать не будут. Но для примера пусть полежит.
    do-tcp: yes

    # включаем эту опцию, если собираемся форвардить dns через TLS (см.список серверов ниже)
    ##ssl-upstream: yes

    # Уровень детализации журнала событий (0 - только ошибки; 1 - каждый запрос; 3 - детальный разбор)
    #verbosity: 0

    # На период отладки полезно включить детальное журналирование запросов пользователей
    log-queries: yes

    # Месторасположение файла журнала событий
    logfile: "/var/log/unbound.log"
    
    # Использовать в журнале человекопонятный формат метки времени
    log-time-ascii: yes

    # Предписываем не дублировать сообщения о событиях в системный журнал
    use-syslog: no

    # Подставляем актуальный перечень корневых DNS-серверов (скачиваем отсюда: "ftp://ftp.internic.net/domain/named.cache")
    root-hints: "/etc/unbound/db.root"
    
    # Блок описания средства удалённого управления сервисом (отключаем за ненадобностью)
    remote-control:
    control-enable: no
    control-interface: 127.0.0.1
    control-port: 8953
    
    # localzone
    forward-zone:
    ##  один вариант name: ".1.5.10.in-addr.arpa." или
    name: "mydomen.local."
    forward-addr: 10.5.1.1
    ## второй описание внутренней сети
    local-zone: "local.int." static
    local-data: "pc1.local.int A 10.5.1.5"
    local-data: "pc2.local.int A 10.5.1.6"
    
    # list dns servers
    forward-zone:
    name: "."
    forward-addr: 91.204.176.2
    forward-addr: 91.204.179.2
    forward-addr: 213.87.1.1
    forward-addr: 213.87.0.1
    forward-addr: 91.135.210.56
    forward-addr: 1.1.1.1
    forward-addr: 1.0.0.1
    forward-addr: 91.197.76.254
    forward-addr: 91.197.77.254
    forward-addr: 8.8.8.8
    forward-addr: 8.8.4.4
    forward-addr: 9.9.9.9
    forward-addr: 149.112.122.122

  • теперь генерируем сертификат:
unbound-control-setup
 setup in directory /etc/unbound
 Certificate request self-signature ok
 subject=CN = unbound-control
 removing artifacts
 Setup success. Certificates created. Enable in unbound.conf file to use
  • перезапускаем unbound.

ИСТОЧНИКИ: