DNS в pfSense - Resolver, Forwarder и переопределения

pfSense предоставляет два встроенных DNS-сервиса для разрешения доменных имён - DNS Resolver на основе Unbound и DNS Forwarder на основе dnsmasq. Оба сервиса обеспечивают кэширование DNS-запросов, переопределение записей и интеграцию с DHCP, однако различаются архитектурой и областью применения. DNS Resolver является рекомендуемым решением и включён по умолчанию в актуальных версиях pfSense. DNS Forwarder следует использовать только в специфических сценариях, когда требуется одновременный опрос нескольких DNS-серверов.

DNS Resolver и DNS Forwarder - сравнение

Перед настройкой необходимо определить, какой из сервисов соответствует требованиям инфраструктуры.

ХарактеристикаDNS Resolver (Unbound)DNS Forwarder (dnsmasq)
Режим работыРекурсивный резолвер или форвардерТолько форвардер
DNSSECПоддерживаетсяНе поддерживается
DNS over TLSПоддерживаетсяНе поддерживается
КэшированиеДаДа
Переопределение хостовДаДа
Переопределение доменовДаДа
Регистрация DHCP-хостовДаДа
Параллельный опрос DNS-серверовНет (последовательно)Да (все серверы одновременно)
Включён по умолчаниюДаНет

Внимание:

Два DNS-сервиса не могут работать одновременно на одном порту. При включении одного сервиса второй необходимо отключить или назначить ему альтернативный порт.

Когда использовать DNS Resolver

DNS Resolver (Unbound) является предпочтительным выбором в большинстве сценариев:

  • Стандартная корпоративная или домашняя сеть с потребностью в DNSSEC
  • Среды, требующие шифрования DNS-запросов через DNS over TLS
  • Инфраструктура с необходимостью прямого рекурсивного разрешения без зависимости от внешних форвардеров
  • Сети с интеграцией DHCP-регистрации и локальных DNS-записей

Когда использовать DNS Forwarder

DNS Forwarder (dnsmasq) оправдан в ограниченном числе ситуаций:

  • Multi-WAN конфигурации, где параллельный опрос DNS-серверов через все каналы обеспечивает более быстрый ответ
  • Среды с нестабильными или высоколатентными DNS-серверами, где параллельный запрос снижает задержку
  • Совместимость с устаревшими конфигурациями, ранее использовавшими dnsmasq

Настройка DNS Resolver

Конфигурация DNS Resolver выполняется через Services > DNS Resolver.

Общие параметры

ПараметрОписаниеЗначение по умолчанию
EnableВключение DNS ResolverВключён
Listen PortПорт прослушивания (TCP/UDP)53
Network InterfacesИнтерфейсы для приёма запросовВсе интерфейсы
Outgoing Network InterfacesИнтерфейсы для отправки запросовВсе интерфейсы
System Domain Local Zone TypeТип зоны для системного доменаTransparent
DNSSECПроверка подлинности DNS-ответовВключён
DNS Query ForwardingРежим пересылки вместо рекурсииОтключён
DHCP RegistrationРегистрация DHCP-хостов в DNSОтключён
Static DHCPРегистрация статических привязок DHCPОтключён
OpenVPN ClientsРегистрация OpenVPN-клиентовОтключён

Режим работы - Resolver и Forwarding

По умолчанию DNS Resolver работает в режиме рекурсивного резолвера - он самостоятельно обращается к корневым DNS-серверам и последовательно проходит по цепочке делегирования до получения ответа. Этот режим не зависит от внешних форвардеров и обеспечивает полную проверку DNSSEC.

При включении DNS Query Forwarding Resolver переходит в режим форвардера - запросы пересылаются на DNS-серверы, указанные в System > General Setup или полученные автоматически от провайдера. Режим пересылки полезен, когда:

  • Корпоративная политика требует использования определённых DNS-серверов
  • Провайдер блокирует прямые DNS-запросы к корневым серверам
  • Необходимо использовать DNS-серверы с фильтрацией контента (OpenDNS, Cloudflare for Families)

Внимание:

При включении DNS Query Forwarding в сочетании с DNSSEC следует убедиться, что вышестоящие DNS-серверы поддерживают DNSSEC. В противном случае валидация завершится ошибкой, и легитимные запросы будут отклоняться.

SSL/TLS Service (DNS over TLS)

DNS Resolver поддерживает приём зашифрованных запросов от клиентов через DNS over TLS на порту 853. Для включения необходимо:

  1. Установить флажок SSL/TLS Service в настройках DNS Resolver
  2. Убедиться, что на pfSense настроен валидный сертификат
  3. Настроить клиентские устройства для использования pfSense в качестве DoT-сервера

Исходящий DNS over TLS

Для шифрования исходящих DNS-запросов от pfSense к вышестоящим серверам необходимо:

  1. Включить DNS Query Forwarding
  2. Установить флажок Use SSL/TLS for outgoing DNS Queries to Forwarding Servers
  3. Указать DNS-серверы с поддержкой DoT в System > General Setup (например, 1.1.1.1, 8.8.8.8, 9.9.9.9)

Шифрование исходящих запросов предотвращает перехват DNS-трафика провайдером или промежуточными узлами.

Переопределение хостов (Host Overrides)

Host Overrides позволяют создавать локальные DNS-записи, перенаправляющие разрешение конкретных имён хостов на указанные IP-адреса. Это аналог записей в файле /etc/hosts, но на уровне DNS-сервера для всей сети.

Создание записи

Настройка выполняется в разделе Host Overrides на странице Services > DNS Resolver.

ПолеОписаниеПример
HostИмя хоста (без домена)intranet
DomainДоменное имяcorp.local
IP AddressIPv4 или IPv6 адрес192.168.1.100
DescriptionОписание записиCorporate intranet server

Результирующая DNS-запись: intranet.corp.local -> 192.168.1.100

Дополнительные имена (Aliases)

Для каждого Host Override допускается добавление альтернативных имён через раздел Additional Names for this Host. Это эквивалент CNAME-записей, позволяющий нескольким именам указывать на один адрес.

Типичные сценарии

  • Перенаправление внутреннего трафика к публичным сервисам компании на локальные серверы (split DNS / hairpin NAT)
  • Создание коротких имён для часто используемых ресурсов внутренней сети
  • Блокировка доступа к определённым доменам (перенаправление на 127.0.0.1)
  • Тестирование веб-приложений с подменой DNS-записей без изменения публичного DNS

Переопределение доменов (Domain Overrides)

Domain Overrides перенаправляют DNS-запросы для определённых доменов на указанные DNS-серверы. В отличие от Host Overrides, которые задают конкретные IP-адреса, Domain Overrides определяют сервер, ответственный за разрешение всех записей в домене.

Создание записи

Настройка выполняется в разделе Domain Overrides на странице Services > DNS Resolver.

ПолеОписаниеПример
DomainДоменное имя для перенаправленияinternal.corp.com
IP AddressАдрес DNS-сервера для этого домена10.0.0.53
TLS QueriesИспользовать DNS over TLS при обращенииНет
TLS HostnameИмя хоста для проверки TLS-сертификата-
DescriptionОписание правилаInternal AD DNS

Типичные сценарии

  • Перенаправление запросов к домену Active Directory на контроллеры домена
  • Разрешение зон внутренней инфраструктуры через выделенные DNS-серверы
  • Интеграция с DNS-серверами филиальных офисов через VPN
  • Перенаправление обратных DNS-зон (in-addr.arpa) на авторитетные серверы

DNSSEC

DNSSEC (Domain Name System Security Extensions) обеспечивает проверку подлинности и целостности DNS-ответов с помощью криптографических подписей. DNS Resolver в pfSense поддерживает валидацию DNSSEC по умолчанию.

Принцип работы

При включённом DNSSEC Resolver проверяет цепочку доверия от корневых серверов до запрашиваемого домена. Если подпись DNS-ответа не проходит проверку, ответ отклоняется и клиент получает ошибку SERVFAIL. Это защищает от:

  • DNS spoofing (подмена DNS-ответов)
  • Cache poisoning (отравление кэша DNS)
  • Man-in-the-middle атак на уровне DNS

Ограничения DNSSEC

Не все домены подписаны DNSSEC. При обращении к домену без DNSSEC-подписи валидация пропускается, и ответ обрабатывается обычным образом.

При использовании DNS Query Forwarding вышестоящие серверы должны поддерживать передачу DNSSEC-записей (DO bit). Большинство публичных DNS-серверов (Google DNS, Cloudflare, Quad9) корректно обрабатывают DNSSEC.

Диагностика DNSSEC

Для проверки работоспособности DNSSEC следует выполнить запрос к заведомо подписанному домену через Diagnostics > DNS Lookup:

  • dnssec-failed.org - домен с намеренно некорректной подписью; при работающем DNSSEC запрос должен завершиться ошибкой
  • dnssec.works - домен с корректной подписью; запрос должен успешно разрешиться

Интеграция с DHCP

DNS Resolver поддерживает автоматическую регистрацию имён хостов, полученных через DHCP, что позволяет обращаться к устройствам в сети по имени.

Настройка регистрации

В разделе Services > DNS Resolver доступны следующие опции:

ПараметрОписание
DHCP RegistrationРегистрация имён динамических DHCP-клиентов
Static DHCPРегистрация имён из статических привязок DHCP
OpenVPN ClientsРегистрация Common Name подключённых OpenVPN-клиентов

При включении DHCP Registration клиент, запросивший адрес с именем хоста workstation1 в домене corp.local, автоматически получает DNS-запись workstation1.corp.local, указывающую на его DHCP-адрес.

Требования

  • DHCP сервер и DNS Resolver должны работать на одном экземпляре pfSense
  • Клиент должен передавать имя хоста в DHCP-запросе (большинство ОС делают это по умолчанию)
  • Системный домен pfSense должен быть корректно настроен в System > General Setup

Подробная настройка DHCP сервера описана в разделе DHCP сервер pfSense .

Списки доступа (Access Lists)

Списки доступа DNS Resolver определяют, какие клиенты имеют право отправлять DNS-запросы.

Создание списка доступа

Настройка выполняется через вкладку Access Lists на странице Services > DNS Resolver.

ПолеОписание
Access List NameНазвание правила
ActionДействие: Allow, Deny, Refuse, Allow Snoop
NetworksПодсети, к которым применяется правило
DescriptionОписание правила

Действия

ДействиеПоведение
AllowРазрешить рекурсивные запросы
DenyОтбросить запрос без ответа
RefuseОтклонить запрос с ответом REFUSED
Allow SnoopРазрешить все запросы, включая нерекурсивные (для диагностики)

По умолчанию DNS Resolver разрешает запросы со всех подсетей, назначенных интерфейсам pfSense. Дополнительные списки доступа необходимы при обслуживании клиентов из подсетей, не привязанных напрямую к интерфейсам (например, клиентов за вышестоящим маршрутизатором).

Настройка DNS Forwarder

DNS Forwarder настраивается через Services > DNS Forwarder. Перед включением необходимо отключить DNS Resolver или назначить ему другой порт.

Основные параметры

ПараметрОписание
EnableВключение DNS Forwarder
Network InterfacesИнтерфейсы для приёма запросов
Query DNS servers sequentiallyПоследовательный опрос вместо параллельного

По умолчанию DNS Forwarder отправляет запрос на все настроенные DNS-серверы одновременно и использует первый полученный ответ. Это обеспечивает минимальную задержку, но создаёт дополнительный трафик. При включении Query DNS servers sequentially серверы опрашиваются последовательно.

DNS-серверы для пересылки берутся из System > General Setup и из параметров, автоматически полученных от провайдера (DHCP, PPPoE).

Host Overrides и Domain Overrides

DNS Forwarder поддерживает те же функции переопределения хостов и доменов, что и DNS Resolver. Синтаксис и логика работы аналогичны описанным выше.

Расширенные настройки Unbound

Вкладка Advanced Settings позволяет передавать произвольные директивы конфигурации Unbound через текстовое поле Custom Options. Эта функция предназначена для опытных администраторов и позволяет:

  • Настроить нестандартные параметры кэширования
  • Определить частные домены (private-domain)
  • Задать локальные зоны и записи
  • Изменить параметры производительности (num-threads, msg-cache-size, rrset-cache-size)

Пример добавления локальной зоны:

server:
local-zone: "internal.example.com" static
local-data: "server1.internal.example.com A 10.0.0.10"
local-data: "server2.internal.example.com A 10.0.0.11"

Внимание:

Некорректные директивы в Custom Options приведут к ошибке запуска DNS Resolver. Перед сохранением рекомендуется проверить синтаксис конфигурации.

Диагностика проблем

DNS не разрешает имена

  1. Проверить, что DNS Resolver или Forwarder включён (Services > DNS Resolver или Services > DNS Forwarder)
  2. Убедиться, что клиент использует IP-адрес pfSense в качестве DNS-сервера
  3. Выполнить тестовый запрос через Diagnostics > DNS Lookup
  4. Проверить, что вышестоящие DNS-серверы доступны (System > General Setup)
  5. Просмотреть журнал: Status > System Logs > Resolver (или Forwarder)
  6. Проверить правила файрвола - DNS использует порты TCP/UDP 53

Медленное разрешение DNS

  1. В режиме Resolver - проверить доступность корневых DNS-серверов; при необходимости переключиться в режим Forwarding
  2. В режиме Forwarding - проверить задержку до вышестоящих серверов через Diagnostics > Ping
  3. Рассмотреть включение DNS over TLS - шифрование добавляет незначительную задержку, но предотвращает перехват
  4. Проверить размер кэша - при частых одинаковых запросах увеличение кэша через Advanced Settings снижает задержку

Ошибки DNSSEC

  1. Убедиться, что системное время pfSense корректно синхронизировано (DNSSEC-подписи содержат временные метки)
  2. Проверить, поддерживают ли вышестоящие DNS-серверы DNSSEC (при использовании Forwarding)
  3. Протестировать с доменом dnssec-failed.org - если он разрешается, DNSSEC не функционирует
  4. Временно отключить DNSSEC для изоляции проблемы: если без DNSSEC разрешение работает, причина в цепочке доверия

Host Override не работает

  1. Проверить, что домен в Host Override совпадает с запрашиваемым клиентом
  2. Очистить DNS-кэш на клиентском устройстве
  3. Убедиться, что клиент использует pfSense в качестве DNS-сервера, а не обращается к внешним серверам напрямую
  4. Проверить, что правила файрвола не перенаправляют DNS-трафик мимо pfSense

Заметки по миграции

Миграция с Cisco DNS

В Cisco IOS DNS-настройки задаются глобально через ip name-server и ip domain-name. pfSense предоставляет значительно больше возможностей:

Cisco IOSpfSense
ip name-server 8.8.8.8System > General Setup > DNS Servers
ip domain-name corp.localSystem > General Setup > Domain
ip host server1 192.168.1.10Host Overrides в DNS Resolver
ip dns serverВключение DNS Resolver

Миграция с FortiGate DNS

FortiGate поддерживает DNS Database с зонами и записями. В pfSense аналогичная функциональность реализуется через Host Overrides и Domain Overrides:

  • DNS Database записи -> Host Overrides
  • Conditional Forwarding -> Domain Overrides
  • FortiGuard DNS Filter -> Внешние DNS-серверы с фильтрацией (Cloudflare for Families, OpenDNS)

Миграция с MikroTik DNS

MikroTik DNS настраивается через /ip dns. Основные соответствия:

MikroTikpfSense
/ip dns set servers=8.8.8.8System > General Setup > DNS Servers
/ip dns set allow-remote-requests=yesВключение DNS Resolver на интерфейсе
/ip dns static addHost Overrides
/ip dns cache flushDiagnostics > DNS Lookup > Clear Cache

Связанные разделы

Last updated on