Два способа использовать FastDDNS на pfSense
На панели управления hostname доступны два варианта настройки. Метод 2 добавляет FastDDNS во встроенный Services > Dynamic DNS клиент как Custom провайдера — этот вариант лучше выбрать для постоянной настройки: pfSense сохраняет его в конфигурации и включает в резервные копии. Метод 1 вставляет однострочный скрипт в оболочку и создаёт задание cron, которое запускается каждые две минуты. Это работает сразу, но pfSense не управляет этим заданием.
Нумерация ниже соответствует меткам на вашей панели, а не рекомендуемому нами порядку. Для долгосрочной настройки используйте Метод 2; к Методу 1 обращайтесь, если нужно немедленно отправить обновление без заполнения формы.
| Метод 2 — встроенный клиент DDNS | Метод 1 — скрипт crontab | |
|---|---|---|
| Где выполняется настройка | Services > Dynamic DNS в веб-интерфейсе | Diagnostics > Command Prompt, или по SSH |
| Сохраняется в конфигурации pfSense | Да | Нет — см. ограничение ниже |
| Сохраняется после восстановления конфигурации или переустановки | Да | Нет |
| Когда отправляется обновление | При изменении адреса отслеживаемого интерфейса, а также раз в день при повторной проверке | Каждые 2 минуты независимо от изменений |
| Сложность настройки | Семь полей, четыре из которых нужно скопировать с панели | Одно вставление |
| Подходит для | Постоянной настройки | Немедленного первого обновления или быстрой проверки |
Прежде чем начать
Четыре вещи, и две из них решают, будет ли вообще работать удалённый доступ.
- Имя хоста FastDDNS. Создайте его бесплатно на FastDDNS, затем откройте его и прокрутите до DDNS Configuration Parameters > Firewall pfSense.
- Административный доступ к веб-интерфейсу pfSense, а доступ к консоли — только если вы планируете использовать метод 1.
- Реальный публичный IP на интерфейсе WAN. Если ваш интернет-провайдер помещает вас за Carrier-Grade NAT, DDNS не поможет — hostname будет указывать на адрес, недоступный извне сети провайдера. Проверьте адрес WAN на панели управления pfSense или запустите CGNAT Checker в мобильном приложении FastDDNS.
- Правила файервола и NAT для всего, к чему вы хотите получить доступ. DDNS только поддерживает указание имени на правильный адрес; способ доступа к нему всё равно остаётся вашей задачей. После этого проверьте его с помощью Port Check.
Если на панели управления pfSense на интерфейсе WAN указан адрес из 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 или 100.64.0.0/10, это означает, что где-то выше по цепочке выполняется NAT. Диапазон 100.64.0.0/10 зарезервирован для Carrier-Grade NAT.
Метод 2 — добавить FastDDNS как Пользовательский клиент Dynamic DNS
Это настройка, которую стоит сохранить. pfSense сохраняет её в config.xml, поэтому она восстанавливается вместе с конфигурацией и переживает переустановку.
Шаг 1 — скопируйте URL обновления из панели hostname
Откройте свой hostname, прокрутите до DDNS Configuration Parameters и разверните Firewall pfSense. Всё необходимое для обоих методов находится в этой одной панели:

Скопируйте URL обновления в поле под Method 2. Оно уже содержит ваш hostname и учётные данные:
https://client.fastddns.net/?hostname=myhome.fastddns.net&user_name=YOUR-USERNAME&user_pass=YOUR-UPDATE-PASSWORDТри значения, записанные заглавными буквами, обозначают данные, приватные для вашей учётной записи, — панель подставляет их автоматически.
Шаг 2 — откройте клиент Dynamic DNS
В веб-интерфейсе pfSense перейдите к Services > Dynamic DNS и нажмите + Добавить.
Шаг 3 — заполните поля
| Поле | Значение | Зачем |
|---|---|---|
| Service Type | Custom |
FastDDNS нет в списке встроенных провайдеров, но это и не требуется |
| Interface to Monitor | WAN |
Интерфейс, изменение адреса которого должно запускать обновление |
| Hostname | ваше имя хоста FastDDNS | URL обновления уже содержит его, поэтому для типа Custom это в основном метка, которую вы увидите в списке |
| Update URL | URL из шага 1 | Вставьте его полностью. Не нужно ничего %IP% заменять — FastDDNS регистрирует адрес, с которого поступает запрос |
| Force IPv4 DNS Resolution | установлен | Разрешает разрешение hostname обновления только через IPv4, поэтому FastDDNS регистрирует ваш WAN-адрес IPv4, а не IPv6 |
| Result Match | оставьте пустым | pfSense сравнивает это со всем ответом. FastDDNS отвечает good после изменения и nochg если ничего не изменилось, поэтому одна фиксированная строка не подходит для обоих случаев — в собственных инструкциях панели значение не задаётся |
| Description | FastDDNS.net |
Произвольный текст для справки |

Шаг 4 — сохраните настройки и проверьте колонку состояния
Нажмите Сохранить и принудительно обновить. Вернувшись к списку Services > Dynamic DNS, столбец Кешированный IP должен заполниться вашим текущим WAN-адресом. Пустая запись или запись, которая остаётся устаревшей после принудительного обновления, означает, что обновление не прошло — причины описаны в таблице устранения неполадок ниже.
Важно понимать: этот метод работает по событиям, а не по двухминутному интервалу. Согласно документации Netgate, сервис обновляется при изменении адреса интерфейса, а pfSense также поставляется со стандартной записью cron, которая запускается /etc/rc.dyndns.update раз в день в 01:01 в качестве страховки. Поэтому неудачное обновление будет повторено — просто не в течение нескольких минут. Если обновление нужно выполнить немедленно, используйте Сохранить и принудительно обновить.
Если вы предпочитаете обращаться к той же конечной точке из собственного скрипта, параметры описаны на странице странице API клиента FastDDNS.
Приведённое ниже руководство основано на более старой записи, поэтому панель выглядит иначе, чем на приведённых здесь скриншотах. Поля и порядок действий остались прежними.
Метод 1 — однострочный скрипт crontab
Шаг 1 — скопируйте скрипт из панели hostname
В той же панели Firewall pfSense скопируйте блок под заголовком Method 1. Это одна строка, созданная на основе того же URL обновления:
((crontab -l >/dev/null && crontab -l | grep -i "client.fastddns.net") || ((crontab -l; echo '*/2 * * * * fetch "URL" -o /dev/null || curl -s "URL"') | crontab -; fetch "URL" -o /dev/null || curl -s "URL"; printf "\n\nAdded Dynamic DNS Script to crontab successfully\n\n"; exit 1;)) && printf "\n\nFastDDNS is available \n\n";В готовой строке каждый URL выше — это ваш полный URL обновления из шага 1 метода 2. Скопируйте его из панели, а не составляйте вручную.

Шаг 2 — выполните его
Вставьте строку в Diagnostics > Command Prompt в поле Выполнить команду Shell и нажмите Выполнить. Сессия SSH или пункт 8 в консоли подойдут не хуже.
Предупреждение Netgate относится ко всей этой странице: она выполняет всё вставленное с полными привилегиями, и неверная команда может сделать файрвол неработоспособным. Вставьте только строку из своей панели. Команда также должна завершиться и вернуть результат — эта команда именно так и работает, поэтому её безопасно выполнять здесь.
Шаг 3 — что означают два сообщения
Ищите одну из этих двух строк в конце вывода. Они означают разные вещи:
| Сообщение | Что произошло |
|---|---|
| Added Dynamic DNS Script to crontab successfully | В crontab не было записи FastDDNS, поэтому она была добавлена, и обновление отправлено сразу же |
| FastDDNS is available | Запись уже существовала, поэтому ничего не было изменено |
Проверка представляет собой обычный grep для client.fastddns.net во всём crontab. Это предотвращает установку задания дважды — но это также означает, что если вы добавите второе hostname на том же firewall, скрипт увидит первое и откажется добавлять что-либо. Строку cron для второго hostname нужно добавить вручную.
Именно grep также объясняет, почему второй запуск выводит больше, чем одну строку: выводится совпадение, и совпадающая строка — это запись cron, которая содержит ваш URL обновления полностью — включая имя пользователя и пароль. Если вы запускаете это за чьей-то спиной или вставляете вывод в заявку, именно эту строку нужно удалить.
Сама запланированная строка выполняет fetchfetch, загрузчик FreeBSD, который поставляется с pfSense, и при сбое используется curl.
Шаг 4 — ограничение, о котором стоит знать, прежде чем полагаться на этот способ
pfSense хранит собственные запланированные задачи в config.xml и оттуда перестраивает системный crontab. Задача, добавленная с помощью crontab -, находится в crontab пользователя root, которым pfSense не управляет и не включает в резервную копию конфигурации. Отсюда следуют два вывода:
- После восстановления конфигурации или переустановки firewall задания там не будет — а клиент Dynamic DNS из метода 2 останется.
- Если System > Advanced > Miscellaneous включены RAM-диски для
/tmpи/var, корневой crontab хранится в RAM. Netgate указывает, что при перезагрузке сохраняются только данные RRD, DHCP-аренды, журналы и данные Captive Portal — crontab в этот список не входит.
Ничто из этого не делает метод 1 неправильным. Это хороший способ настроить обновление сейчас, но плохой способ оставить всё как есть на год. Если вам нужна cron-задача, которую pfSense действительно сохраняет, установите пакет Cron и добавьте через него ту же строку.
Ещё одна старая запись, показывающая способ со скриптом в предыдущем дизайне панели.
Проверьте, что hostname действительно обновляется
Какой бы метод вы ни использовали, проверьте результат с трёх точек зрения.
В pfSense Services > Dynamic DNSклиент показывает Кэшированный IP для каждой записи — он должен совпадать с вашим WAN-адресом. Если вы использовали Метод 1, убедитесь, что задание существует, и выполните его один раз вручную из оболочки:
crontab -l
fetch -o - "PASTE-YOUR-UPDATE-URL-HERE"Вторая команда выводит ответ сервера. Он должен начинаться с good, если адрес только что изменился, или с nochg, если он уже был правильным — FastDDNS может добавить адрес, который он записал. badauth — это единственный ответ, который однозначно указывает на проблему: в URL указано неверное имя пользователя или пароль обновления. Любой другой ответ или его отсутствие сами по себе ничего не объясняют — прочитайте, что именно вернулось, затем проверьте системный журнал.
Из внешней сети разрешите hostname и сравните результат с вашим публичным адресом:
nslookup myhome.fastddns.netНаконец, на панели вашего hostname отображается отметка времени Last Updated — она меняется с момента Not yet updatedпервого отчёта брандмауэра. FastDDNS применяет новый адрес менее чем за 60 секунд, хотя локальный DNS-кэш может хранить старый адрес немного дольше.
Устранение неполадок pfSense DDNS
| Что вы видите | Почему | Что делать |
|---|---|---|
Ответ имеет вид badauth |
Неверное имя пользователя или пароль обновления в URL | Скопируйте Update URL с панели ещё раз; если вы перешли от другого провайдера, см. руководство по замене адреса сервера No-IP или DynDNS |
| Cached IPСтолбец состояния остаётся пустым после сохранения | Клиент не смог связаться с хостом обновления, или URL был обрезан при вставке | Используйте Save & Force Update, затем проверьте Status > System Logs > System > Generalподробное журналированиеVerbose Logging в записи — оно показывает полный обмен |
| hostname разрешается в IPv6-адрес | Хост обновления был достигнут по IPv6, поэтому именно этот адрес был записан | Отметьте Force IPv4 DNS Resolution на записи Dynamic DNS и принудительно выполните обновление |
| Каждое обновление отмечается как неудачное, хотя hostname указан правильно | Result Match установлен как фиксированная строка, и ответ чередуется между good и nochg |
Очистите поле Result Match, чтобы отключить проверку результата |
| Метод 1 сработал, затем перестал работать после перезагрузки или восстановления конфигурации | Задание cron размещено вне config.xml и может находиться на RAM-диске |
Настройте вместо этого Метод 2 или добавьте строку через Cron |
| Имя хоста разрешается, но на вашем порту никто не отвечает | Hostname разрешается, но на вашем port никто не отвечает | DDNS работает; путь в сеть недоступенПроверки порта |
| Добавьте правила NAT и брандмауэра, затем протестируйте извне с помощью | Hostname разрешается в адрес, который не является вашим публичным IP | Брандмауэр находится за другим слоем NAT, часто CGNAT |
| Сравните WAN-адрес на панели управления с тем, что показывает проверка публичного IP; если они отличаются, запросите у вашего провайдера публичный IP | Бесплатное доменное имя обновляется раз в год, а временное действует 30 дней | Обновите его из вашего аккаунта или перейдите на тарифный план, у которого доменные имена не истекают |
Держите URL обновления в секрете
URL обновления содержит ваш hostname, имя пользователя и пароль обновления в виде обычных параметров запроса. Он хранится таким образом в конфигурации pfSense и, при использовании Метода 1, в crontab — любой, кто может прочитать резервную копию конфигурации, сможет прочитать эти учетные данные. Обращайтесь с экспортом конфигурации pfSense так же, как с файлом паролей, и никогда не вставляйте URL обновления без редактирования в ветку форума или в заявку в службу поддержки. Если вы уже это сделали, измените пароль обновления в вашей учетной записи и перенастройте запись.
Часто задаваемые вопросы
Стоит ли использовать клиент Dynamic DNS или cron-скрипт?
Используйте клиент Dynamic DNS в разделе Services > Dynamic DNS для всего, что вы намерены сохранить. pfSense хранит его в конфигурации, поэтому он входит в резервную копию и восстанавливается после переустановки. Скрипт cron — это более быстрый способ выполнить первое обновление, но pfSense не управляет этим заданием, и оно может быть потеряно при перезагрузке или восстановлении конфигурации.
Нужно ли открывать port для самого обновления DDNS?
Нет. pfSense открывает исходящее HTTPS-соединение с FastDDNS, поэтому для обновления не требуется правило для входящего трафика. Вам по-прежнему нужны port forwarding и правила брандмауэра для сервисов, к которым вы хотите получить доступ через hostname, например port 554 для RTSP или веб-порт камеры.
Почему панель просит меня принудительно использовать разрешение IPv4?
Потому что FastDDNS фиксирует адрес, с которого приходит ваш запрос. Если pfSense определяет хост обновления как адрес IPv6 и подключается по IPv6, именно этот адрес он фиксирует, и ваша A record оказывается неправильной или пустой. Принудительное разрешение IPv4 оставляет обновление на том же протоколе, что и адрес, который вы хотите опубликовать.
Будет ли это работать, если мой провайдер использует CGNAT?
Нет. При Carrier-Grade NAT ваш файрволл не имеет собственного публичного IP, поэтому нет адреса, на который hostname мог бы указывать, а входящие соединения блокируются провайдером. DDNS решает проблему меняющихся адресов, но не проблему отсутствия публичного адреса. Попросите у провайдера публичный IP или используйте сервис, который туннелирует исходящие соединения.
Используете что-то другое на граничном устройстве? Тот же URL для обновления работает везде, где можно выполнять плановый HTTPS-запрос, включая MikroTik RouterOS setup.





