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

> Обновление pfSense через веб-интерфейс и консоль - подготовка, бэкап конфигурации, процедура обновления и откат в случае проблем

Source: https://opennix.org/docs/pfsense/installation/pfsense-upgrading/


Регулярное обновление 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](/img/pfsense/pfsense-update-check.webp)

<p style="text-align: center;">Рис. 1. Раздел System > Update - проверка доступных обновлений</p>

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

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

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

![Процесс обновления pfSense](/img/pfsense/pfsense-update-progress.webp)

<p style="text-align: center;">Рис. 2. Ход выполнения обновления - журнал установки</p>

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

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

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

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

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

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

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

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

```bash
pfSense-upgrade -d      # Download and install update
```

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

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

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

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

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

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

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

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

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

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

| Аспект | Пример изменений |
|---|---|
| Версия FreeBSD | 12.x на 14.x - меняются драйверы, поведение сетевого стека |
| Версия PHP | 7.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. Система загрузится с предыдущей версией и конфигурацией.

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

```bash
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. Проверить процесс обновления:

```bash
ps aux | grep pfSense-upgrade
```

4. Если процесс обновления отсутствует в списке, попытаться запустить обновление повторно:

```bash
pfSense-upgrade -d
```

5. При наличии ошибок файловой системы выполнить проверку:

```bash
fsck -y /
```

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

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

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

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

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

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

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

1. Подключить монитор и клавиатуру (или последовательную консоль).
2. В загрузчике выбрать **Boot Single User** (опция 2 в меню загрузчика).
3. Проверить файловую систему:

```bash
fsck -y /
mount -u /
```

4. Просмотреть журнал обновления:

```bash
cat /cf/conf/upgrade_log.latest.txt
```

5. При невозможности восстановления - выполнить переустановку с восстановлением из резервной копии конфигурации.

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

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

1. Подключиться к консоли.
2. В меню консоли pfSense выбрать пункт **2) Set interface(s) IP address** и проверить адресацию LAN-интерфейса.
3. Перезапустить веб-сервер:

```bash
/etc/rc.restart_webgui
```

4. Проверить правила межсетевого экрана, блокирующие доступ к портам 80/443:

```bash
pfctl -sr | grep "pass.*80\|pass.*443"
```

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

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

1. Проверить статус сервиса:

```bash
/usr/local/etc/rc.d/unbound.sh status
```

2. Перезапустить сервис:

```bash
/usr/local/etc/rc.d/unbound.sh restart
```

3. Проверить конфигурацию на наличие синтаксических ошибок:

```bash
unbound-checkconf
```

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

- [Системные требования pfSense](/docs/pfsense/installation/pfsense-system-requirements/) - проверка совместимости оборудования перед обновлением, особенно при переходе между мажорными версиями
- [Установка pfSense](/docs/pfsense/installation/pfsense-installation-guide/) - полная переустановка системы, если обновление невозможно или завершилось неудачей
- [Резервное копирование pfSense](/docs/pfsense/backup/pfsense-backup-recovery/) - создание и управление резервными копиями конфигурации (раздел будет добавлен в следующей волне документации)

