Dynamic DNS в pfSense - обновление записей при смене IP

Dynamic DNS (DDNS) решает проблему доступа к сервисам, размещённым за подключением с динамическим IP-адресом. При каждом изменении WAN-адреса pfSense автоматически обновляет DNS-запись у провайдера, обеспечивая постоянную доступность по доменному имени. Это критически важно для удалённого доступа через VPN, размещения веб-серверов, организации видеонаблюдения и других сценариев, где требуется стабильное доменное имя при непостоянном IP-адресе.

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

При подключении к провайдеру pfSense получает WAN-адрес через DHCP или PPPoE. Этот адрес может изменяться при каждом переподключении или по истечении срока аренды. Dynamic DNS клиент отслеживает текущий WAN-адрес и при его изменении отправляет запрос на обновление записи к DNS-провайдеру через API. Таким образом, доменное имя всегда указывает на актуальный IP-адрес.

Процесс обновления происходит следующим образом:

  1. pfSense периодически проверяет текущий IP-адрес на выбранном интерфейсе
  2. При обнаружении изменения формируется запрос к API DNS-провайдера
  3. Провайдер обновляет A-запись (или AAAA для IPv6) для указанного домена
  4. Обновление распространяется по DNS в соответствии с TTL записи

Поддерживаемые провайдеры

pfSense поддерживает широкий набор DNS-провайдеров для автоматического обновления записей.

ПровайдерОсобенности
CloudflareБесплатный DNS, поддержка проксирования, API token
No-IPБесплатный план с ограничениями, широкая совместимость
DynDNSОдин из старейших DDNS-сервисов, платный
NamecheapБесплатный DDNS для доменов, зарегистрированных в Namecheap
Route 53AWS DNS-сервис, требует Access Key и Zone ID
HE.netHurricane Electric, бесплатный DNS с поддержкой DDNS
FreeDNSБесплатный сервис afraid.org
DNSimpleAPI-ориентированный DNS-провайдер
GleSYSШведский хостинг-провайдер с DNS API
CustomПроизвольный провайдер с HTTP API

При выборе провайдера следует учитывать требования к надёжности, скорость распространения обновлений и наличие дополнительных функций (проксирование, DNSSEC на стороне провайдера).

Настройка DynDNS клиента

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

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

Для добавления нового клиента необходимо нажать кнопку Add и заполнить следующие поля.

ПолеОписаниеПример
DisableВременное отключение записи без удаленияНе установлен
Service TypeПровайдер DDNS из спискаCloudflare
Interface to MonitorИнтерфейс, IP-адрес которого отслеживаетсяWAN
HostnameПолное доменное имя (FQDN)home.example.com
Domain NameДоменное имя (для Namecheap - отдельное поле)example.com
UsernameИмя пользователя или API-ключЗависит от провайдера
PasswordПароль или API-токенЗависит от провайдера
DescriptionОписание записи для идентификацииHome server DDNS

Выбор интерфейса

Поле Interface to Monitor определяет, какой IP-адрес будет передаваться провайдеру.

ВариантКогда использовать
WANСтандартное подключение с одним внешним каналом
OPTxДополнительные WAN-интерфейсы в multi-WAN конфигурации
Gateway GroupАвтоматическое переключение между WAN при отказе основного канала

При выборе Gateway Group Dynamic DNS автоматически переключается на резервный WAN-адрес при отказе основного канала, обеспечивая непрерывную доступность сервисов.

Метод определения IP-адреса

pfSense предлагает несколько методов определения текущего публичного IP-адреса.

Адрес интерфейса - используется IP-адрес, назначенный выбранному WAN-интерфейсу. Этот метод подходит, когда pfSense подключён напрямую к провайдеру и получает публичный адрес.

Внешний сервис проверки IP - pfSense обращается к внешнему HTTP-сервису, который возвращает публичный IP-адрес. Этот метод необходим, когда pfSense находится за NAT вышестоящего маршрутизатора и его WAN-интерфейс имеет приватный адрес.

Внимание:

Если pfSense расположен за NAT провайдера (Carrier-Grade NAT) или другого маршрутизатора, необходимо использовать внешний сервис проверки IP. В противном случае в DNS будет зарегистрирован приватный адрес WAN-интерфейса, недоступный из интернета.

Дополнительные параметры

ПараметрОписание
MXMail Exchanger запись для почтового сервера
WildcardРазрешение поддоменов на тот же IP-адрес
Verbose LoggingПодробное журналирование для диагностики
SSL Peer VerificationПроверка SSL-сертификата при обращении к API провайдера

Периодичность обновлений

Dynamic DNS клиент проверяет IP-адрес при каждом изменении состояния интерфейса, а также принудительно обновляет запись каждые 25 дней, даже если адрес не изменился. Это предотвращает удаление неактивных записей провайдерами с политикой автоматической очистки.

Настройка для конкретных провайдеров

Cloudflare

Cloudflare является одним из наиболее популярных провайдеров благодаря бесплатному DNS-хостингу и дополнительным функциям проксирования.

  1. Создать API-токен в личном кабинете Cloudflare с правами на редактирование DNS-зон
  2. В pfSense выбрать Service Type: Cloudflare
  3. В поле Username указать адрес электронной почты аккаунта Cloudflare
  4. В поле Password указать API-токен (не Global API Key)
  5. Указать полное имя хоста в поле Hostname

Namecheap

Для доменов, зарегистрированных в Namecheap, DDNS доступен бесплатно.

  1. Активировать Dynamic DNS в панели управления доменом Namecheap
  2. Скопировать сгенерированный пароль Dynamic DNS
  3. В pfSense выбрать Service Type: Namecheap
  4. Поле Username оставить пустым
  5. В поле Password указать пароль из панели Namecheap
  6. В поле Hostname указать имя хоста (без домена)
  7. В поле Domain Name указать домен

Route 53 (AWS)

Для использования Route 53 необходим аккаунт AWS с настроенной hosted zone.

  1. Создать IAM-пользователя с политикой, разрешающей route53:ChangeResourceRecordSets
  2. В поле Username указать Access Key ID
  3. В поле Password указать Secret Access Key
  4. Указать Zone ID в соответствующем поле
  5. Задать TTL записи (рекомендуется 60-300 секунд)

Custom (пользовательский провайдер)

Тип Custom позволяет настроить обновление через произвольный HTTP API.

ПолеОписание
Update URLURL для обновления записи с подстановкой %IP%
Result MatchСтрока, ожидаемая в ответе при успешном обновлении

Пример URL: https://dns.example.com/update?hostname=home.example.com&ip=%IP%&token=secret

pfSense подставит текущий IP-адрес вместо %IP% и проверит наличие строки из Result Match в ответе сервера.

RFC 2136 - обновление собственного DNS-сервера

RFC 2136 определяет стандартный протокол динамического обновления DNS-записей. Этот метод позволяет pfSense напрямую обновлять записи на DNS-сервере (BIND, PowerDNS, Windows Server DNS) без использования стороннего провайдера.

Когда использовать RFC 2136

  • Организация располагает собственным авторитетным DNS-сервером
  • Требуется полный контроль над DNS-инфраструктурой без зависимости от внешних сервисов
  • DNS-сервер поддерживает протокол динамических обновлений (BIND 9, PowerDNS, Microsoft DNS)

Настройка RFC 2136

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

ПолеОписаниеПример
EnableВключение записиУстановлен
InterfaceИнтерфейс, IP-адрес которого регистрируетсяWAN
HostnameПолное доменное имя (FQDN)fw.corp.example.com
ZoneDNS-зона для обновленияcorp.example.com
ServerIP-адрес или имя DNS-сервера10.0.0.53
Record TypeТип записи: A, AAAA или обаA
TTLВремя жизни записи в секундах60
Key NameИмя TSIG-ключаfw.corp.example.com
Key AlgorithmАлгоритм TSIGHMAC-SHA256
KeyСекретный ключ TSIG в формате Base64(сгенерированный ключ)

Генерация TSIG-ключа

TSIG (Transaction Signature) обеспечивает аутентификацию обновлений. Ключ необходимо сгенерировать на DNS-сервере и указать в настройках pfSense.

Для BIND генерация ключа выполняется следующей командой:

tsig-keygen -a hmac-sha256 fw.corp.example.com

Результат содержит ключ в формате Base64, который следует скопировать в поле Key в pfSense. Тот же ключ необходимо добавить в конфигурацию BIND и разрешить обновления для соответствующей зоны.

Дополнительные параметры RFC 2136

ПараметрОписание
Use Public IPОпределение публичного IP через внешний сервис (при NAT)
Update SourceИнтерфейс для отправки обновлений
ProtocolUDP (по умолчанию) или TCP

Внимание:

При использовании TCP для обновлений необходимо убедиться, что правила файрвола разрешают исходящий TCP-трафик на порт 53 DNS-сервера. По умолчанию обновления отправляются по UDP.

Multi-WAN и несколько записей DDNS

pfSense поддерживает создание произвольного количества записей Dynamic DNS, что позволяет реализовать несколько сценариев.

Несколько провайдеров для одного домена

Для повышения надёжности допускается создание записей у нескольких провайдеров для одного и того же имени хоста. При недоступности одного провайдера второй продолжит обслуживать запросы.

Разные записи для разных WAN

В multi-WAN конфигурации каждому WAN-интерфейсу следует назначить отдельную запись Dynamic DNS:

ЗаписьИнтерфейсДомен
Запись 1WANwan1.example.com
Запись 2WAN2wan2.example.com

Gateway Group для отказоустойчивости

При использовании Gateway Group в качестве интерфейса Dynamic DNS автоматически обновляет запись при переключении на резервный канал. Это обеспечивает непрерывную доступность входящих подключений при отказе основного провайдера.

Проверка статуса обновлений

Состояние всех записей Dynamic DNS отображается на странице Status > Dynamic DNS.

СтолбецОписание
InterfaceОтслеживаемый интерфейс
ServiceТип провайдера
HostnameОбновляемое доменное имя
Cached IPПоследний зарегистрированный IP-адрес
StatusРезультат последнего обновления

Статус Updated указывает на успешное обновление. Статус Error сигнализирует о проблеме - подробности доступны в журнале.

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

Запись не обновляется

  1. Проверить статус на странице Status > Dynamic DNS - поле Status должно содержать информацию об ошибке
  2. Включить Verbose Logging в настройках записи для получения подробных данных
  3. Просмотреть журнал: Status > System Logs > Dynamic DNS
  4. Убедиться, что WAN-интерфейс имеет IP-адрес и шлюз по умолчанию доступен
  5. Проверить DNS-разрешение на pfSense через Diagnostics > DNS Lookup

Обнаруживается неверный IP-адрес

  • Если pfSense за NAT - включить определение публичного IP через внешний сервис
  • Проверить, что выбран корректный интерфейс в поле Interface to Monitor
  • При использовании Gateway Group убедиться, что группа настроена корректно

Ошибка аутентификации

  1. Проверить корректность учётных данных (API-токен, пароль)
  2. Для Cloudflare - убедиться, что используется API-токен с правами на редактирование DNS-зоны, а не Global API Key
  3. Для Namecheap - убедиться, что Dynamic DNS активирован в панели управления доменом
  4. Для Route 53 - проверить IAM-политику пользователя

RFC 2136 не обновляет запись

  1. Проверить доступность DNS-сервера с pfSense: Diagnostics > Ping
  2. Убедиться, что TSIG-ключ совпадает на pfSense и DNS-сервере
  3. Проверить, что зона на DNS-сервере разрешает динамические обновления
  4. Просмотреть журнал DNS-сервера на предмет ошибок аутентификации

Интеграция с VPN и проброс портов

Dynamic DNS широко используется совместно с VPN и пробросом портов (Port Forwarding).

VPN с Dynamic DNS

При настройке удалённого VPN-подключения (OpenVPN, IPsec) Dynamic DNS обеспечивает стабильный адрес сервера:

  • В конфигурации VPN-клиента указывается доменное имя вместо IP-адреса
  • При смене WAN-адреса клиент автоматически переподключается по обновлённому DNS
  • TTL записи рекомендуется устанавливать в 60-120 секунд для минимизации задержки переподключения

Port Forwarding с Dynamic DNS

Для доступа к внутренним сервисам через проброс портов Dynamic DNS позволяет использовать стабильное доменное имя:

  1. Настроить правило Port Forward в Firewall > NAT > Port Forward
  2. Создать запись Dynamic DNS для WAN-интерфейса
  3. Обращаться к сервису по адресу hostname.example.com:port

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

  • DNS (Resolver и Forwarder) - настройка DNS-разрешения и переопределение записей на уровне pfSense
  • Правила файрвола - управление доступом к сервисам при использовании Dynamic DNS
  • Multi-WAN failover - отказоустойчивость каналов связи с автоматическим обновлением DNS
Last updated on