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. Для включения необходимо:
- Установить флажок SSL/TLS Service в настройках DNS Resolver
- Убедиться, что на pfSense настроен валидный сертификат
- Настроить клиентские устройства для использования pfSense в качестве DoT-сервера
Исходящий DNS over TLS
Для шифрования исходящих DNS-запросов от pfSense к вышестоящим серверам необходимо:
- Включить DNS Query Forwarding
- Установить флажок Use SSL/TLS for outgoing DNS Queries to Forwarding Servers
- Указать 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 Address | IPv4 или 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 не разрешает имена
- Проверить, что DNS Resolver или Forwarder включён (Services > DNS Resolver или Services > DNS Forwarder)
- Убедиться, что клиент использует IP-адрес pfSense в качестве DNS-сервера
- Выполнить тестовый запрос через Diagnostics > DNS Lookup
- Проверить, что вышестоящие DNS-серверы доступны (System > General Setup)
- Просмотреть журнал: Status > System Logs > Resolver (или Forwarder)
- Проверить правила файрвола - DNS использует порты TCP/UDP 53
Медленное разрешение DNS
- В режиме Resolver - проверить доступность корневых DNS-серверов; при необходимости переключиться в режим Forwarding
- В режиме Forwarding - проверить задержку до вышестоящих серверов через Diagnostics > Ping
- Рассмотреть включение DNS over TLS - шифрование добавляет незначительную задержку, но предотвращает перехват
- Проверить размер кэша - при частых одинаковых запросах увеличение кэша через Advanced Settings снижает задержку
Ошибки DNSSEC
- Убедиться, что системное время pfSense корректно синхронизировано (DNSSEC-подписи содержат временные метки)
- Проверить, поддерживают ли вышестоящие DNS-серверы DNSSEC (при использовании Forwarding)
- Протестировать с доменом
dnssec-failed.org- если он разрешается, DNSSEC не функционирует - Временно отключить DNSSEC для изоляции проблемы: если без DNSSEC разрешение работает, причина в цепочке доверия
Host Override не работает
- Проверить, что домен в Host Override совпадает с запрашиваемым клиентом
- Очистить DNS-кэш на клиентском устройстве
- Убедиться, что клиент использует pfSense в качестве DNS-сервера, а не обращается к внешним серверам напрямую
- Проверить, что правила файрвола не перенаправляют DNS-трафик мимо pfSense
Заметки по миграции
Миграция с Cisco DNS
В Cisco IOS DNS-настройки задаются глобально через ip name-server и ip domain-name. pfSense предоставляет значительно больше возможностей:
| Cisco IOS | pfSense |
|---|---|
ip name-server 8.8.8.8 | System > General Setup > DNS Servers |
ip domain-name corp.local | System > General Setup > Domain |
ip host server1 192.168.1.10 | Host 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. Основные соответствия:
| MikroTik | pfSense |
|---|---|
/ip dns set servers=8.8.8.8 | System > General Setup > DNS Servers |
/ip dns set allow-remote-requests=yes | Включение DNS Resolver на интерфейсе |
/ip dns static add | Host Overrides |
/ip dns cache flush | Diagnostics > DNS Lookup > Clear Cache |
Связанные разделы
- DHCP сервер pfSense - настройка DHCP с регистрацией хостов в DNS
- Правила файрвола - контроль DNS-трафика и перенаправление запросов
- Настройка VLAN - раздельная конфигурация DNS для различных сегментов сети