Релиз pfSense 2.6 / pfSense Plus 22.01
14 февраля вышла новая версия opensource файрвола pfSense — 2.6.0. Одновременно с этим вышла версия pfSense Plus 22.01 — варианта для фирменных железок компании-разработчика Netgate, поддерживающая оборудование на базе процессоров ARM и включающая в себя некоторые дополнительные пакеты и функции.
Подразумевается, что читатель имеет определённый опыт работы с pfSense и не нуждается в подробном разъяснении, что означает тот или иной термин.
Пройдёмся по новым функциям и наиболее заметным багфиксам. Детальный список изменений можно найти на странице релиза.
Aliases / Tables
Самым заметным багфиксом является исправление использования вложенных URL алиасов,- теперь их можно использовать как в обычных, так и собственно в URL алисах, создавая различные вложенные конфигурации.
Authentication
При создании нового пользователя или изменении пароля существующего, для хеширования пароля используется алгоритм SHA-512 (ранее использовался Blowfish). Важно отметить, что это нарушает обратную совместимость бэкапа с предыдущими версиями — они не смогут аутентифицировать пользователей с таким хэшированием.
Backup / Restore
Бэкап серверных SSH ключей (включен по умолчанию) — особенно удобно, если используются скрипты автоматизации с подключением к pfSense по SSH. После восстановления бэкапа те не будут ругаться на изменение ключей файрвола.
Восстановление дополнительных данных (SSH ключи, DHCP/DHCP6 данные аренды, БД Captive Portal) при восстановлении бэкапа с флэшки во время установки (см. Automatically Restore Configuration During Installation).
Auto Config Backup теперь загружает бэкап в фоновом режиме, не тормозя загрузку страниц.
Исправлена загрузка станицы Auto Config Backup в случае недоступности интернета или DNS сервера.
CARP
Исправления багов:
Стало возможным перейти в Persistent CARP Maintenance Mode из выключенного CARP (Temporary Disable CARP);
Исправлено изменение CARP VHID на Secondary узле (ранее CARP VIP мог удалиться при этом);
Корректное обновление IP Алиасов прицепленных к CARP VIP при изменении VHID.
Captive Portal
При использовании RAM дисков теперь можно сохранять данные баз данных Captive Portal (подключенных пользователи, ваучеры и пр.).
Ранее при некорректном завершении работы pfSense, могли быть неправильные правила файрвола и неактуальные данные статистики Captive Portal (страница Status / Monitoring → Captive Portal). Теперь это исправлено.
Certificates
Корректно отображаются сертификаты с UTF-8 кодировкой:
Вкладка Certificate Revocation теперь отображает, какими сервисами/пакетами используется CRL:
Console menu
При конфигурировании IPv4 адресов интерфейсов в консоли, теперь допустимо использовать маску /32 (раньше минимальная маска была /31).
DHCP (IPv4)
Добавлена поддержка появившейся в спецификации UEFI 2.5 опции UEFI HTTP Boot, позволяющей вместо привычного TFTP, загружаться по сети с веб-сервера.
DNS Resolver
Исправлены ошибка, когда в некоторых ситуациях процесс unbound завершался с 'signal 11' во время перезагрузки. Так же исправлена ошибка запуска unbound, когда тот не находил указанный Python скрипт (актуально при восстановлении бэкапа с pfBlockerNG).
Dashboard
Добавлен новый виджет, отображающий использованное месте на диске:
В pfSense Plus добавлен виджет для ZFS:
Dynamic DNS
Добавлена поддержка DynDNS провайдеров Strato, deSEC, Name.com и Dy.fi
Исправлена работа NoIP.com, Yandex PDD и One.com.
Добавлена поддержка прокси для DynDNS и Check IP services.
Исправлена ошибка, когда обновление DynDNS может случиться в ошибочный день.
Для кастомного DynDNS провайдера теперь можно указать кол-во дней, через которое должен быть запущен процесс принудительного обновления записи (Max Cache Age).
Добавлена поддержка Check IP services возвращающих просто IP адрес (без приставки «Current IP Address:»), например https://checkip.amazonaws.com, https://myip.dnsomatic.com и пр.
Исправлена ошибка, когда RFC2136 DynDNS мог отправить приватный IP даже при выставленной опции Use public IP.
Кастомный DynDNS теперь дополнительно проверяет локальное хранилище сертификатов при подключении по HTTPS (полезно, если у вас собственный DynDNS сервер с локальным CA).
IPsec
Традиционно много изменений:
Изменена система именования VTI интерфейсов — если раньше это были имена вида ipsecXXXX, то теперь просто ipsecX, где X — это reqid второй фазы. Соответственно, если вы использовали скрипты для работы с такими интерфейсами, их нужно будет поправить.
Множество багфиксов виджета и страницы статуса IPsec — всё, что можно теперь отображается корректно, при нажатии на connect/disconnect подключаются/отключаются правильные IPsec фазы.
Mobile IPsec клиенты в режиме EAP-RADIUS получают дополнительные параметры как надо, — было сломано начиная с 2.5.0.
Демон PC/SC смарт карт pcscd (используется для PKCS#11 токенов) отключен по умолчанию — на ряде платформ данный демон страдает утечками памяти, что может привести к её полному исчерпанию.
Добавлена возможность нормализации IPsec/OpenVPN трафика (страница System / Advanced / Firewall & NAT → VPN Packet Processing), — необходимо её включать, в частности, когда OpenVPN клиенты должны получить доступ к хостам через IPsec туннель (схема вида «OpenVPN клиент → pfSense → = IPsec = → Хост):
Исправлено создание BINAT правил файрвола для Mobile IPsec клиентов.
Для IKEv2 добавлена возможность настраивать параметр IKEv2 Retransmission на странице VPN / IPsec / Advanced Settings:
Исправлено создание автоматических правил файрвола в случае, когда в качестве remote gateway выбрано 0.0.0.0 или ::.
Исправлена ошибка, когда вторичный High Availability узел мог инициировать IPsec соединение, если в качестве исходящего интерфейса выбрана гейтевей группа (gateway group).
Множество более мелких исправлений, подробнее см. https://forum.netgate.com/topic/165510/heads-up-ipsec-changes.
IPv6 Router Advertisements (RADVD)
Время IPv6 RA DNSSL теперь равно MaxRtrAdvInterval * 3, что соответствует значению RFC 8106.
Интервалы router advertisement равны значениям, принятым большинством вендоров, и теперь составляют:
Minimum RA interval: 200
Maximum RA interval: 600
Router lifetime: 1800
Interfaces
Теперь при загрузке с динамических IPv6 интерфейсов корректно стартуют туннели GRE и GIF.
Исправлена ошибка, когда QinQ интерфейсы, прикреплённые к OpenVPN TAP интерфейсам, не поднимались при загрузке.
Добавлена поддержка сортировка столбцов на странице настройки VLAN’ов.
Исправлена ошибка, когда было невозможно создать два GRE туннеля разных IP протоколов (IPv4 и IPv6) к одному и тому же хосту.
Удалена проверка пересечения IPv6 сетей для 6RD интерфейсов, для более гибкого назначения адресов внутренних сетей (subneting) — например, это позволяет использовать на LAN интерфейсах адреса 2001:2002:51e3:5443:1::/80 и 2001:2002:51e3:5443:2::/80 в то время как на 6RD интерфейсе используется адрес 2001:2002:51e3:5443::/32.
Иные, менее значимые исправления.
L2TP
Исправлена ошибка, когда L2TP retransmit события могли привести к kernel panic.
Исправлена ошибка подключения по L2TP при загрузке, когда в качестве сервера подключения используется FQDN имя (актуально при подключении к некоторым провайдерам).
Logging
На системах с файловой системой ZFS, сжатие файлов журнала автоматически отключается, т.к. ZFS сама сжимает подобные данные.
NTP
Добавлена поддержка Peer режима, когда два узла обмениваются NTP данными друг с другом. Удобно для HA кластеров.
Минимально допустимый Poll Interval теперь равен 8 секундам.
Добавлена поддержка SHA-256 аутентификации для режима сервера (клиентская часть всё ещё не поддерживает аутентификацию).
Notifications
Добавлена поддержка уведомлений в Slack.
Отправка уведомлений при перезагрузке/выключении.
Возможно отключить уведомления о просроченных сертификатах.
OpenVPN
Традиционно много изменений:
Добавлена поддержка алиасов — теперь, вместо того, чтобы перечислять через точку с запятой нужные сети в Tunnel/Local/Remote networks, можно просто создать алиасы с всем нужными сетями и использовать их в настройке OpenVPN. Очень удобно.
Исправлена проверка валидности клиентских сертификатов через OCSP.
Добавлен чекбокс для проверки корректности EKU сертификата — сертификат клиента должен иметь EKU «TLS Web Client Authentication», а при проверке сертификата сервера, EKU должен быть «TLS Web Server Authentication».
Добавлено логирование внешнего IP адреса клиента при подключении/отключении (особенно полезно, если логи pfSense отправляются на отдельный syslog сервер и там нужно парсить OpenVPN события).
Если настроена автоматическая регистрация OpenVPN клиентов в DNS сервере pfSense, то теперь добавляется ещё и соответствующая PTR запись.
Исправлен парсинг Cisco-ACL правил с RADIUS сервера, в которых указан диапазон портов (правила вида «permit tcp host 192.168.2.5 host 192.168.6.3 range 10000 65535», ранее парсились некорректно).
Исправлен парсинг Framed-IP атрибута RADIUS.
Опции «exit-notify» и «inactive timeout» теперь отключены по умолчанию для соединений вида точка-точка. В предыдущей версии, из-за этой опции удалённая сторона могла завершить соединение, отправив уведомление об отключении, в результате чего соединение не восстанавливалось автоматически.
На странице Status / OpenVPN добавлена возможность просмотра отпарсенных RADIUS правил — просто нажмите на иконке с буквой «i» справа от соединения:
На той же странице добавлена кнопка принудительного завершения сессии — иконка с косым крестом в красном круге справа от соединения. Позволяет отключить клиента отправив тому сообщение «exit-notify», благодаря чему тот не будет пытаться автоматически переподключиться (в этом основное отличие от имеющейся кнопки «terminate».
Operational System
Для RAM дисков теперь используется tmpfs.
Встроенный веб-сервер Nginx обновлён для устранения уязвимости CVE-2021–23017.
На странице настройки логов добавлено замечание, что отключение логирования так же отключает работу sshguard (т.к. тот следит за неудачными попытками аутентификации).
В ядре исправлена ошибка функции nd6_dad_timer (), которая могла при определённых условиях привести к kernel panic.
ZFS теперь используется по умолчанию на большинстве appliance’ов Netgate (актуально для корпоративных клиентов использующих pfSense Plus).
PPPoE Server
Добавлена поддержка выбора протокола аутентификации клиентов (PAP/CHAP):
Package System
Исправлена ошибка, когда в некоторых случаях терялись тэги
и пакетов из конфигурационного файла. В итоге это могло приводить к ошибкам, когда на HA кластере функционирование определённого пакета корректно менялось на одной ноде, но не работало на другой. Добавлен пакет librdkafka (устанавливается в консоли: pkg install librdkafka). Нужен, если на pfSense необходимо установить nProbe.
Исправлена ошибка на странице обновления прошивки (pkg_mgr_install.php), при открытии её в нескольких вкладках.
RRD graphs
Добавлена поддержка графиков температуры (при использовании поддерживаемых процессоров и/или сетевых карт):
Routing
Исправления в настройке статических маршрутов — теперь они корректно обновляются при изменении шлюза, алиаса (если тот указан в качестве destination), удалении маршрута и пр.
Исправлен баг, когда статический маршрут, помеченный как «disabled», мог являться причиной того, что данный статический маршрут удалялся из системной таблицы маршрутизации, даже если был получен из другой подсистемы (например, OpenVPN).
Firewall / NAT
В скрипт easyrule добавлена поддержка IPv6 адресов.
Исправлены ошибки проверки введённых данных на страницах настройки NAT.
Исправлена ошибка, когда policy-routing правило для IPv6 маршрута по умолчанию (::/0) не срабатывало, если в IPsec PH2 также использовалась сеть ::/0.
Исправлена ошибка создания правил файрвола, когда на странице 1:1 NAT в качестве «Internal Net» выбрано «Any».
Ускорена загрузка страниц правил файрвола с большим количеством Policy-Routing правил.
Исправлена ошибка создания Port Forward правил при выборе в качестве Source/Destination сети интерфейса, к которому прикручены ещё и Virtual IP адреса (конкретно они не добавлялись к правилам).
На странице Floating правил теперь отображается иконка с направлением правила (in/out).
Исправлено создание Port Forward правил для специальных сетей — OpenVPN, PPPoE Server (теперь можно редиректить PPPoE клиентов к своему DNS, к примеру).
Исправлено создание Automatic Outbound NAT правил для IPv6.
Теперь можно перейти на настройку шлюза / Gateway Group’ы, просто нажав на соответствующее имя в столбце Gateway страницы правил файрвола.
Исправлена ошибка изменения tracker ID правила после нескольких перезапусков фильтра. Теперь всё стабильно.
SNMP
Штатный SNMP демон теперь поддерживает IPv6
Traffic Shaper (ALTQ)
Исправлен kernel crash при использовании CBQ.
Сетевые карты Chelsio T6 CXGBE добавлены в список поддерживаемых QoS (ALTQ).
По умолчание Traffic Shaper теперь использует Mbit/s (давно пора).
Traffic Shaper Wizard теперь создаёт правила и для IPv4, и для IPv6 трафика.
Traffic Shaper (Limiters)
Для удаления лимитера теперь не нужно предварительно убирать его с соответствующих правил файрвола (само удаляется).
Исправлен kernel crash при использовании fq_pie.
UPnP/NAT-PMP
Добавлена возможность использования STUN сервера для определения внешнего IP — если ваш провайдер использует unrestricted NAT 1:1, то это позволит UPnP корректно работать несмотря на то, что ваш WAN интерфейс имеет адрес из RFC1918 диапазона.
Upgrade
При обновлении/изменении версии pfSense теперь запускается переустановка всех пакетов. Раньше это было не всегда так, что приводило к неработоспособности некоторых программ.
User Manager / Privileges
На странице пользователей добавлена кнопка копирования. Удобно, если вам необходимо создать несколько пользователей с одинаковыми правами.
Wake on LAN
При нажатии на кнопку «Wake All Devices» теперь появляется окно подтверждения, дабы случайно не перебудить всех).
Web Interface
Формат шрифтов изменён на WOFF2.
Исправлена ошибка загрузки страниц Status / DHCP Leases и Diagnostics / ARP Table и медленная загрузка некоторых других страниц при недоступном DNS сервере.
Исправлена ошибка на странице System / Advanced / Notifications, когда было невозможно сохранить настройки, не поставив галочку Disable SMTP (если, к примеру, нужно настроить только Telegram уведомления, но не трогать остальное).
Исправлен баг, когда при редактировании интерфейсов типа PPP (PPP/PPPoE/L2TP/PPTP), соответствующий интерфейс мог быть удалён при сохранении настроек
Wireless
Исправлена ошибка в wpa_supplicant, приводящая к загрузке CPU на 100% во время загрузки.
Исправлено отображение опций EAP клиента на странице настройки интерфейса.
XMLRPC
Исправлена ошибка XMLRPC синхронизации в случае, если указана опция Failover peer IP в настройках DHCP сервера, но данный интерфейс не настроен (выключен, либо не поднятый динамический/VPN интерфейс и пр.).
Добавлена поддержка синхронизации DHCP Relay.
Исправлена синхронизация / обновление настроек IPsec на бэкап узле HA.
Небольшие улучшения в логировании / отображении ошибок XMLRPC синхронизации.