Обновление pfSense - руководство по апгрейду версий

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

Предварительные требования

Перед началом обновления необходимо выполнить ряд подготовительных действий. Пренебрежение этими шагами может привести к потере конфигурации или длительному простою.

Создание резервной копии конфигурации

Резервная копия конфигурации - единственный способ гарантированно восстановить систему после неудачного обновления. Экспорт выполняется через Diagnostics > Backup & Restore.

  1. Перейти в Diagnostics > Backup & Restore.
  2. В разделе Backup Configuration выбрать ALL в поле Backup area.
  3. Установить флажок Encrypt this Configuration File, если файл будет храниться в незащищённом месте.
  4. Нажать Download Configuration as XML.
  5. Сохранить файл в безопасное место - не на сам межсетевой экран.

Внимание:

Резервная копия конфигурации не включает данные пакетов, содержимое файловой системы за пределами /cf/conf/ и пользовательские скрипты, размещённые вручную. Если на межсетевом экране используются сторонние модификации, их необходимо сохранять отдельно.

Изучение примечаний к выпуску

Перед обновлением следует ознакомиться с Release Notes целевой версии. Примечания к выпуску содержат информацию о:

  • удалённых или изменённых функциях;
  • изменениях в формате конфигурации;
  • известных проблемах и несовместимостях;
  • требованиях к оборудованию (например, обязательная поддержка AES-NI в ряде версий).

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

Проверка совместимости пакетов

Установленные пакеты могут быть несовместимы с целевой версией pfSense. Перед обновлением необходимо:

  1. Перейти в System > Package Manager > Installed Packages.
  2. Зафиксировать список и версии установленных пакетов.
  3. Проверить на форуме Netgate и в трекере ошибок, поддерживаются ли эти пакеты в целевой версии.

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

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

  • Виртуальные среды: создать снимок (snapshot) виртуальной машины перед началом обновления. Это позволит выполнить мгновенный откат без восстановления из резервной копии.
  • Физическое оборудование: убедиться в наличии консольного доступа (последовательный порт или IPMI/iLO/iDRAC) на случай, если после обновления веб-интерфейс окажется недоступен.
  • Перезагрузка перед обновлением: выполнить перезагрузку межсетевого экрана до начала процедуры обновления. Это позволяет убедиться, что система стартует корректно и отсутствуют скрытые проблемы с файловой системой.
  • Подключение к интернету: для загрузки обновлений межсетевой экран должен иметь доступ к серверам обновлений Netgate. Проверить DNS-резолвинг и маршрутизацию на WAN-интерфейсе.

Обновление через веб-интерфейс

Веб-интерфейс - рекомендуемый метод обновления для большинства развёртываний. Процесс автоматизирован и включает загрузку обновления, проверку целостности, установку и перезагрузку.

Проверка наличия обновлений

  1. Перейти в System > Update.
  2. В поле Branch выбрать ветку обновлений. Для продуктивных сред следует использовать стабильную ветку (Latest stable version). Ветки для разработки и Release Candidate подходят исключительно для тестовых стендов.
  3. Система выполнит проверку и отобразит доступную версию, если обновление существует.

Проверка наличия обновлений pfSense

Рис. 1. Раздел System > Update - проверка доступных обновлений

Если система уже работает на актуальной версии, отобразится сообщение о том, что обновления отсутствуют.

Выполнение обновления

  1. После обнаружения доступного обновления нажать Confirm (или Invoke Update в зависимости от версии интерфейса).
  2. Система загрузит файлы обновления, проверит их целостность и начнёт установку.
  3. В процессе установки на экране отображается подробный лог. Не закрывать браузер и не перезагружать межсетевой экран вручную.
  4. После завершения установки система автоматически перезагрузится.

Процесс обновления pfSense

Рис. 2. Ход выполнения обновления - журнал установки

  1. После перезагрузки войти в веб-интерфейс и проверить версию в System > Update или в виджете System Information на Dashboard.
  2. Проверить список установленных пакетов в System > Package Manager > Installed Packages и при необходимости переустановить недостающие.

Внимание:

Во время обновления межсетевой экран прекращает обработку трафика на этапе перезагрузки. Для развёртываний с требованием высокой доступности следует заранее переключить трафик на резервный узел CARP или запланировать окно обслуживания.

Обновление через консоль

Консольное обновление целесообразно для безголовых (headless) систем, удалённого администрирования по SSH и случаев, когда веб-интерфейс недоступен.

Обновление из меню консоли

  1. Подключиться к консоли межсетевого экрана (последовательный порт, SSH или физическая консоль).
  2. В главном меню pfSense выбрать пункт 13) Update from console.
  3. Система проверит наличие обновлений, загрузит необходимые файлы и выполнит установку.
  4. После завершения установки система перезагрузится автоматически.

Обновление через командную строку

Для полностью автоматизированного обновления из командной оболочки:

pfSense-upgrade -d      # Download and install update

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

pfSense-upgrade -c       # Check for available updates without installing
pfSense-upgrade -d -y    # Download, install and auto-confirm prompts

Внимание:

Команда pfSense-upgrade инициирует перезагрузку после завершения установки. При подключении через SSH соединение будет разорвано. Необходимо обеспечить возможность повторного подключения после перезагрузки.

Использование pkg напрямую

В ряде случаев (например, для диагностики) администраторы обращаются к менеджеру пакетов FreeBSD напрямую. Этот метод не рекомендуется для штатного обновления и может привести к повреждению системы.

pkg-static upgrade -f    # Force reinstall of all packages (diagnostic use only)

Прямое использование pkg допустимо только при координации с технической поддержкой Netgate или при восстановлении повреждённой системы пакетов.

Обновление между мажорными версиями

Обновления между мажорными версиями (например, 2.6.x на 2.7.x) требуют повышенного внимания. Такие обновления нередко сопровождаются изменениями базовой операционной системы FreeBSD, версии PHP, формата конфигурации и набора поддерживаемых пакетов.

Типичные изменения при мажорных обновлениях

АспектПример изменений
Версия FreeBSD12.x на 14.x - меняются драйверы, поведение сетевого стека
Версия PHP7.4 на 8.x - пакеты с PHP-компонентами требуют адаптации
Формат конфигурацииНовые секции в config.xml, изменённые имена параметров
Удалённые функцииУстаревшие VPN-протоколы, снятые с поддержки криптоалгоритмы
Требования к оборудованиюОбязательная поддержка AES-NI начиная с определённых версий

Процедура мажорного обновления

  1. Изучить путь обновления. Не все версии поддерживают прямой переход. Например, обновление с 2.4.x на 2.7.x может потребовать промежуточного обновления до 2.5.x. Путь обновления указан в документации Netgate.
  2. Тестирование. При наличии возможности выполнить обновление на идентичном оборудовании в тестовой среде. Это позволит выявить проблемы с драйверами и пакетами до начала работ на продуктивной системе.
  3. Зафиксировать текущее состояние. Помимо резервной копии конфигурации, сохранить:
    • список маршрутов (netstat -rn);
    • состояние интерфейсов (ifconfig -a);
    • список правил PF (pfctl -sr);
    • таблицы NAT (pfctl -sn).
  4. Выполнить обновление через веб-интерфейс или консоль штатным способом.
  5. Проверить систему после обновления. Убедиться в корректной работе всех интерфейсов, маршрутизации, правил межсетевого экрана, VPN-туннелей и критичных сервисов.

Совместимость пакетов при мажорных обновлениях

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

Откат

pfSense не предоставляет встроенного механизма отката обновлений на уровне операционной системы. Восстановление предыдущей версии выполняется одним из следующих способов.

Восстановление из снимка виртуальной машины

Наиболее быстрый метод - откат к снимку виртуальной машины, созданному перед обновлением. Процедура зависит от гипервизора:

  • VMware ESXi: Snapshot Manager - выбрать снимок - Revert.
  • Proxmox VE: Datacenter - выбрать VM - Snapshots - Rollback.
  • Hyper-V: Checkpoints - Apply.

После восстановления снимка виртуальная машина возвращается в состояние до обновления, включая конфигурацию, файловую систему и версию pfSense.

Переустановка с восстановлением конфигурации

Если снимок виртуальной машины отсутствует или система работает на физическом оборудовании:

  1. Установить предыдущую версию pfSense с установочного носителя.
  2. Завершить базовую установку с настройками по умолчанию.
  3. Войти в веб-интерфейс и перейти в Diagnostics > Backup & Restore.
  4. В разделе Restore Backup загрузить ранее сохранённый XML-файл конфигурации.
  5. Подтвердить восстановление. Система применит конфигурацию и перезагрузится.

Внимание:

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

Системы с ZFS (pfSense Plus)

pfSense Plus с файловой системой ZFS поддерживает загрузочные среды (Boot Environments). Перед обновлением система автоматически создаёт загрузочную среду с текущим состоянием. Для отката:

  1. Перезагрузить межсетевой экран.
  2. В загрузчике выбрать предыдущую загрузочную среду.
  3. Система загрузится с предыдущей версией и конфигурацией.

Управление загрузочными средами доступно через меню консоли или командную строку:

bectl list        # List available boot environments
bectl activate BE_name   # Set boot environment for next reboot

Миграция с других платформ

pfSense не поддерживает импорт конфигурации из других межсетевых экранов - Cisco ASA, FortiGate, MikroTik, OPNsense или Sophos. Конфигурацию необходимо планировать и создавать заново.

Планирование миграции

При переходе с другой платформы следует заблаговременно:

  1. Задокументировать существующую конфигурацию - правила файрвола, NAT, маршруты, VPN-туннели, DHCP-пулы, DNS-настройки.
  2. Определить соответствия функций. Не все функции исходной платформы имеют прямые аналоги в pfSense. Например, FortiGate Application Control не эквивалентен механизмам pfSense.
  3. Спланировать адресацию интерфейсов. Имена интерфейсов в pfSense (WAN, LAN, OPTx) отличаются от именования в исходной платформе.
  4. Подготовить тестовую среду. Перед переключением продуктивного трафика развернуть pfSense параллельно и проверить все критичные функции.

Миграция с OPNsense

OPNsense основан на том же коде, что и pfSense, однако форматы конфигурации разошлись. Прямой импорт config.xml из OPNsense в pfSense не поддерживается. Конфигурацию необходимо воссоздать вручную.

Устранение неполадок

Обновление зависло

Если процесс обновления остановился и не продвигается более 30 минут:

  1. Не перезагружать межсетевой экран через кнопку питания - это может повредить файловую систему.
  2. Подключиться к консоли (последовательный порт или SSH, если доступен).
  3. Проверить процесс обновления:
ps aux | grep pfSense-upgrade
  1. Если процесс обновления отсутствует в списке, попытаться запустить обновление повторно:
pfSense-upgrade -d
  1. При наличии ошибок файловой системы выполнить проверку:
fsck -y /

Пакеты не работают после обновления

После обновления установленные пакеты могут потребовать переустановки:

  1. Перейти в System > Package Manager > Installed Packages.
  2. Если пакет отображается, но не функционирует - удалить и установить повторно.
  3. Если пакет отсутствует в репозитории целевой версии - найти альтернативу или обратиться к разработчику пакета.

Для диагностики проблем с конкретным пакетом:

pkg info <package_name>        # Check installed package info
pkg check -d -a                # Verify package dependencies

Система не загружается после обновления

Если после обновления межсетевой экран не загружается:

  1. Подключить монитор и клавиатуру (или последовательную консоль).
  2. В загрузчике выбрать Boot Single User (опция 2 в меню загрузчика).
  3. Проверить файловую систему:
fsck -y /
mount -u /
  1. Просмотреть журнал обновления:
cat /cf/conf/upgrade_log.latest.txt
  1. При невозможности восстановления - выполнить переустановку с восстановлением из резервной копии конфигурации.

Потеря доступа к веб-интерфейсу

Если после обновления веб-интерфейс недоступен, но система загрузилась:

  1. Подключиться к консоли.
  2. В меню консоли pfSense выбрать пункт 2) Set interface(s) IP address и проверить адресацию LAN-интерфейса.
  3. Перезапустить веб-сервер:
/etc/rc.restart_webgui
  1. Проверить правила межсетевого экрана, блокирующие доступ к портам 80/443:
pfctl -sr | grep "pass.*80\|pass.*443"

Ошибки DNS после обновления

В ряде случаев после обновления DNS-резолвер (Unbound или Dnsmasq) может не запуститься:

  1. Проверить статус сервиса:
/usr/local/etc/rc.d/unbound.sh status
  1. Перезапустить сервис:
/usr/local/etc/rc.d/unbound.sh restart
  1. Проверить конфигурацию на наличие синтаксических ошибок:
unbound-checkconf

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

  • Системные требования pfSense - проверка совместимости оборудования перед обновлением, особенно при переходе между мажорными версиями
  • Установка pfSense - полная переустановка системы, если обновление невозможно или завершилось неудачей
  • Резервное копирование pfSense - создание и управление резервными копиями конфигурации (раздел будет добавлен в следующей волне документации)
Last updated on