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-адрес.
Процесс обновления происходит следующим образом:
- pfSense периодически проверяет текущий IP-адрес на выбранном интерфейсе
- При обнаружении изменения формируется запрос к API DNS-провайдера
- Провайдер обновляет A-запись (или AAAA для IPv6) для указанного домена
- Обновление распространяется по DNS в соответствии с TTL записи
Поддерживаемые провайдеры
pfSense поддерживает широкий набор DNS-провайдеров для автоматического обновления записей.
| Провайдер | Особенности |
|---|---|
| Cloudflare | Бесплатный DNS, поддержка проксирования, API token |
| No-IP | Бесплатный план с ограничениями, широкая совместимость |
| DynDNS | Один из старейших DDNS-сервисов, платный |
| Namecheap | Бесплатный DDNS для доменов, зарегистрированных в Namecheap |
| Route 53 | AWS DNS-сервис, требует Access Key и Zone ID |
| HE.net | Hurricane Electric, бесплатный DNS с поддержкой DDNS |
| FreeDNS | Бесплатный сервис afraid.org |
| DNSimple | API-ориентированный 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-интерфейса, недоступный из интернета.
Дополнительные параметры
| Параметр | Описание |
|---|---|
| MX | Mail Exchanger запись для почтового сервера |
| Wildcard | Разрешение поддоменов на тот же IP-адрес |
| Verbose Logging | Подробное журналирование для диагностики |
| SSL Peer Verification | Проверка SSL-сертификата при обращении к API провайдера |
Периодичность обновлений
Dynamic DNS клиент проверяет IP-адрес при каждом изменении состояния интерфейса, а также принудительно обновляет запись каждые 25 дней, даже если адрес не изменился. Это предотвращает удаление неактивных записей провайдерами с политикой автоматической очистки.
Настройка для конкретных провайдеров
Cloudflare
Cloudflare является одним из наиболее популярных провайдеров благодаря бесплатному DNS-хостингу и дополнительным функциям проксирования.
- Создать API-токен в личном кабинете Cloudflare с правами на редактирование DNS-зон
- В pfSense выбрать Service Type: Cloudflare
- В поле Username указать адрес электронной почты аккаунта Cloudflare
- В поле Password указать API-токен (не Global API Key)
- Указать полное имя хоста в поле Hostname
Namecheap
Для доменов, зарегистрированных в Namecheap, DDNS доступен бесплатно.
- Активировать Dynamic DNS в панели управления доменом Namecheap
- Скопировать сгенерированный пароль Dynamic DNS
- В pfSense выбрать Service Type: Namecheap
- Поле Username оставить пустым
- В поле Password указать пароль из панели Namecheap
- В поле Hostname указать имя хоста (без домена)
- В поле Domain Name указать домен
Route 53 (AWS)
Для использования Route 53 необходим аккаунт AWS с настроенной hosted zone.
- Создать IAM-пользователя с политикой, разрешающей
route53:ChangeResourceRecordSets - В поле Username указать Access Key ID
- В поле Password указать Secret Access Key
- Указать Zone ID в соответствующем поле
- Задать TTL записи (рекомендуется 60-300 секунд)
Custom (пользовательский провайдер)
Тип Custom позволяет настроить обновление через произвольный HTTP API.
| Поле | Описание |
|---|---|
| Update URL | URL для обновления записи с подстановкой %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 |
| Zone | DNS-зона для обновления | corp.example.com |
| Server | IP-адрес или имя DNS-сервера | 10.0.0.53 |
| Record Type | Тип записи: A, AAAA или оба | A |
| TTL | Время жизни записи в секундах | 60 |
| Key Name | Имя TSIG-ключа | fw.corp.example.com |
| Key Algorithm | Алгоритм TSIG | HMAC-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 | Интерфейс для отправки обновлений |
| Protocol | UDP (по умолчанию) или TCP |
Внимание:
При использовании TCP для обновлений необходимо убедиться, что правила файрвола разрешают исходящий TCP-трафик на порт 53 DNS-сервера. По умолчанию обновления отправляются по UDP.
Multi-WAN и несколько записей DDNS
pfSense поддерживает создание произвольного количества записей Dynamic DNS, что позволяет реализовать несколько сценариев.
Несколько провайдеров для одного домена
Для повышения надёжности допускается создание записей у нескольких провайдеров для одного и того же имени хоста. При недоступности одного провайдера второй продолжит обслуживать запросы.
Разные записи для разных WAN
В multi-WAN конфигурации каждому WAN-интерфейсу следует назначить отдельную запись Dynamic DNS:
| Запись | Интерфейс | Домен |
|---|---|---|
| Запись 1 | WAN | wan1.example.com |
| Запись 2 | WAN2 | wan2.example.com |
Gateway Group для отказоустойчивости
При использовании Gateway Group в качестве интерфейса Dynamic DNS автоматически обновляет запись при переключении на резервный канал. Это обеспечивает непрерывную доступность входящих подключений при отказе основного провайдера.
Проверка статуса обновлений
Состояние всех записей Dynamic DNS отображается на странице Status > Dynamic DNS.
| Столбец | Описание |
|---|---|
| Interface | Отслеживаемый интерфейс |
| Service | Тип провайдера |
| Hostname | Обновляемое доменное имя |
| Cached IP | Последний зарегистрированный IP-адрес |
| Status | Результат последнего обновления |
Статус Updated указывает на успешное обновление. Статус Error сигнализирует о проблеме - подробности доступны в журнале.
Диагностика проблем
Запись не обновляется
- Проверить статус на странице Status > Dynamic DNS - поле Status должно содержать информацию об ошибке
- Включить Verbose Logging в настройках записи для получения подробных данных
- Просмотреть журнал: Status > System Logs > Dynamic DNS
- Убедиться, что WAN-интерфейс имеет IP-адрес и шлюз по умолчанию доступен
- Проверить DNS-разрешение на pfSense через Diagnostics > DNS Lookup
Обнаруживается неверный IP-адрес
- Если pfSense за NAT - включить определение публичного IP через внешний сервис
- Проверить, что выбран корректный интерфейс в поле Interface to Monitor
- При использовании Gateway Group убедиться, что группа настроена корректно
Ошибка аутентификации
- Проверить корректность учётных данных (API-токен, пароль)
- Для Cloudflare - убедиться, что используется API-токен с правами на редактирование DNS-зоны, а не Global API Key
- Для Namecheap - убедиться, что Dynamic DNS активирован в панели управления доменом
- Для Route 53 - проверить IAM-политику пользователя
RFC 2136 не обновляет запись
- Проверить доступность DNS-сервера с pfSense: Diagnostics > Ping
- Убедиться, что TSIG-ключ совпадает на pfSense и DNS-сервере
- Проверить, что зона на DNS-сервере разрешает динамические обновления
- Просмотреть журнал 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 позволяет использовать стабильное доменное имя:
- Настроить правило Port Forward в Firewall > NAT > Port Forward
- Создать запись Dynamic DNS для WAN-интерфейса
- Обращаться к сервису по адресу
hostname.example.com:port
Связанные разделы
- DNS (Resolver и Forwarder) - настройка DNS-разрешения и переопределение записей на уровне pfSense
- Правила файрвола - управление доступом к сервисам при использовании Dynamic DNS
- Multi-WAN failover - отказоустойчивость каналов связи с автоматическим обновлением DNS