Эта статья — небольшой практический туториал (чтение ≈ 3 мин), который помогает настроить безопасный DNS‑сервис для дома, офиса или VPS с минимальными усилиями.

DNS — один из самых недооценённых компонентов инфраструктуры. Он есть везде, но по умолчанию почти всегда небезопасен: запросы ходят в открытом виде, легко подменяются, логируются провайдерами и могут использоваться для атак.

В этой статье покажу, как настроить безопасный и приватный DNS-резолвер на базе Unbound:

  • только для локальной сети

  • с DNSSEC-валидацией

  • с шифрованием (DNS over TLS)

  • с защитой от спуфинга и утечек приватности

  • с нормальной производительностью


Модель угроз

От чего вообще защищаемся:

  • перехват DNS-запросов провайдером или в публичной сети

  • подмена ответов (DNS spoofing / cache poisoning)

  • сбор статистики по доменам

  • использование вашего сервера как open resolver

Угроза

Решение

Прослушивание

DNS over TLS

Подмена

DNSSEC

Слежка

QNAME minimisation + trusted upstream

Open resolver

access-control


Почему Unbound

Unbound — валидирующий DNS-резолвер от NLnet Labs, ориентированный на безопасность.


Архитектура

Клиенты в LAN -> Unbound (DNSSEC + privacy) -> DoT upstream


Установка Unbound

Debian/Ubuntu

sudo apt update
sudo apt install unbound

Проверка:

unbound -V

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

/usr/local/etc/unbound/unbound.conf

Конфигурация Unbound

# Основной сервер
server:
    interface: 0.0.0.0
    port: 53

    # Разрешить запросы из локальной сети
    access-control: 127.0.0.0/8 allow
    access-control: 192.168.0.1/16 allow

    # Остальным — запрет
    access-control: 0.0.0.0/0 refuse


    # Протоколы
    do-ip4: yes
    do-ip6: no
    do-udp: yes
    do-tcp: yes

    # Производительность
    num-threads: 2
    so-reuseport: yes
    outgoing-range: 8192
    num-queries-per-thread: 4096
    msg-cache-size: 128m
    rrset-cache-size: 256m
    cache-min-ttl: 300
    cache-max-ttl: 86400
    prefetch: yes
    prefetch-key: yes

    # DNSSEC
    tls-cert-bundle: "/etc/ssl/certs/ca-certificates.crt"

    # защита от подмены ответов; harden-dnssec-stripped запрещает 
    # ответы без валидной подписи
    harden-dnssec-stripped: yes

    # приватность: скрываются идентификатор и версия сервера, 
    # минимизируются имена запросов (qname-minimisation),
    # используется CAPS для случайных ID
    hide-identity: yes
    hide-version: yes
    qname-minimisation: yes
    use-caps-for-id: yes
    minimal-responses: yes
    aggressive-nsec: yes
    unwanted-reply-threshold: 100000


    # Логи (по желанию)
    # Минимальные логи. Можно увеличить до 2–3 для отладки.
    verbosity: 1

# Пересылка запросов
forward-zone:
    name: "."
    forward-tls-upstream: yes

    # Applied Privacy (Швейцария)
    forward-addr: 146.255.56.98@853#dot1.applied-privacy.net
    forward-addr: 146.255.56.99@853#dot2.applied-privacy.net

    # Cloudflare (быстрые)
    forward-addr: 1.1.1.1@853#cloudflare-dns.com
    forward-addr: 1.0.0.1@853#cloudflare-dns.com

    # Quad9 (без malware)
    forward-addr: 9.9.9.9@853#dns.quad9.net
    forward-addr: 149.112.112.112@853#dns.quad9.net

замените сеть 192.168.0.1/16 на адрес вашей локальной сети

Проверка конфига:

sudo unbound-checkconf /etc/unbound/unbound.conf

Запуск и автозапуск:

sudo systemctl enable --now unbound

Проверка логов

journalctl -f -u unbound.service

Проверка работы DNS

Теперь на нашем сервисе запущена служба unbound, которая ожидает DNS-запросы на UDP и TCP 53-ем порту.

Можно проверить работу DNS сервера с самого сервера

dig @127.0.0.1 cloudflare.com +dnssec

Или с другого компьютера в вашей сети

dig @192.168.0.1 cloudflare.com +dnssec

замените адрес 192.168.0.1 на адрес вашего сервера

В ответе должен присутствовать флаг "ad", что означает Authenticated Dataданные криптографически проверены через DNSSEC.

AD = 1 → резолвер:

  • выполнил DNSSEC-валидацию

  • проверил цепочку доверия до корневой зоны

  • гарантирует, что ответ:

    • не был подменён

    • не повреждён

    • получен от настоящего владельца зоны Проще: AD = «этому ответу можно доверять"


Итог

Мы получили безопасный, приватный и быстрый DNS с DNSSEC и DNS over TLS, пригодный для дома, офиса или VPS.