Перейти к содержимому

Как обновить pfsense через web

  • автор:

Релиз 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 синхронизации.

    Upgrade Guide¶

    pfSense® software can be reliably upgraded from an older release to a current release.

    Netgate periodically release new versions that contain new features, updates, bug fixes, and various other changes. In most cases, updating an installation is easy. If the firewall is updating to a new release that is a only a point release (e.g 2.x.3 to 2.x.4), the update is typically minor and unlikely to cause problems.

    Only the most recent stable release of pfSense is officially supported, so updating is also important to ensure that any problems encountered may be resolved as needed.

    Upgrades use the same software edition that the firewall is currently running. For example, pfSense CE software installations will upgrade to the latest version of pfSense CE software. pfSense Plus software will upgrade to the latest version of pfSense Plus software. The only exception to this is when following the special procedure to Migrate from pfSense® CE software to Netgate pfSense Plus software .

    The most common problems encountered during upgrades are hardware-specific regressions from one FreeBSD version to another, though those are rare. Updated releases fix more hardware than they break, but regressions are always possible. Larger jumps, such as from 2.3.x to 2.7.2-RELEASE must be handled with care, and ideally tested on identical hardware in a test environment prior to use in production.

    Firewalls must be connected to the Internet to update.

    • Pre-Upgrade Tasks
      • Make a Backup … and a Backup Plan
      • Check and Clean Up ZFS Boot Environments
      • Remove / Dismount any Installation Media
      • VM Snapshots
      • Pre-Upgrade Reboot
      • Packages
      • Upgrading from versions older than pfSense Plus 21.02.2 or pfSense CE 2.5.1
      • Upgrading from versions older than pfSense 2.5.0
      • Upgrading from versions older than pfSense 2.4.5-p1
      • Upgrading from versions older than pfSense 2.4.4
      • Upgrading from versions older than pfSense 2.4.0
      • Older Version Upgrade Notes
      • Upgrading using the GUI
      • Upgrading using the Console
      • Reinstalling / Upgrading Configuration
      • XMLRPC Config Sync Considerations
      • pfsync considerations
      • CARP considerations

      Update Settings¶

      Branch / Tracking Snapshots¶

      By default, the update check looks for officially released versions of pfSense software, but this method can also be used to track development snapshots.

      To change the branch used for updates:

      • Navigate to System > Update
      • Set the Branch to the desired type of updates
      • Wait for the page to refresh and perform a new update check

      The branch list will vary depending on the current development cycle. Examples of options that may be found in the list include:

      Latest Stable Version

      Stable versions are the best option, as they see the most testing and are reasonably safe and trouble-free. However, as with any upgrade, read the changelog and update notes for that release.

      pfSense Plus Upgrade

      Upgrade a system from pfSense CE software to pfSense Plus software. Present on registered systems with access to pfSense Plus software respositories.

      Previous Stable Version (Deprecated)

      A pointer to the previous release so that firewalls may pull packages and update files from the previous release while waiting for a maintenance window or similar upgrade opportunity. May also be labeled “Legacy”.

      Latest Development Snapshots

      Tracks development snapshot builds. These may either be snapshots for the next minor or major version depending on the status of the development cycle.

      Next Major Version

      Tracks snapshots for the next major update version. This is riskier, but in some cases may be required for newer hardware or new features that are not yet released. Consult the forum and test in a lab to see if these snapshots are stable in a particular environment.

      Do not run development versions of pfSense software in production environments.

      Dashboard Check¶

      The Dashboard Check checkbox on System > Update, Update Settings tab controls whether or not the System Information widget on the dashboard performs an update check. On firewalls with low resources or slow disks, disabling this check will reduce the load caused by running the check each time an administrator views the dashboard.

      Boot Environments¶

      The Automatic Creation checkbox controls whether or not the firewall automatically creates a new ZFS Boot Environment when performing an upgrade.

      Administrators may choose to do this, for example, if disk space is constrained and ZFS Boot Environments are not desired, or if they wish to manage ZFS Boot Environments manually.

      GitSync¶

      This section is for developers and should not be used by end users. Leave settings in this area empty or disabled.

      Автоматическая проверка обновлений в pfSense с оповещением по почте

      Автоматизация данного процесса была найдена на официальном форуме, при необходимости можете найти самостоятельно по названию статьи “Auto update check, checks for updates to base system + packages and sends email alerts”

      Сразу хочется предупредить, что если у вас возникнут трудности с предложенным мной вариантом добавления php скрипта на маршрутизатор, существ ещё как минимум два известных мне варианта:

      1. Активировать SSH в меню (System > Advanced > Admin Access) примерно в центре странице ищем “Secure Shell Server”
      2. Загрузить уже готовый файл на сервер, при помощи “Upload File” в меню “Diagnostics > Command Prompt” и командой “rm /tmp/pkg_check.php /root/pkg_check.php” переместить его.

      И так настройка, в главном меню выбираем “Diagnostics > Edit File”

      делаем всё как на картинке ниже. Нажимаем “Browse” и выбираем директорию “/root”, затем в пути дописываем имя файла скрипта “pkg_check.php”, чтобы получилось “/root/pkg_check.php” и нажимаем “Load”. Теперь в появившемся текстовом поле ниже вставляем содержимое скрипта и наживаем “Save”

       if (!is_array($system_version) || !isset($system_version['version']) || !isset($system_version['installed_version'])) < printf("%s\n", 'Error in version information'); log_error("Error in version information, exiting"); exit; >switch ($system_version['pkg_version_compare']) < case '': printf("%s%s%s\n", "pfSense version ", $system_version['installed_version'], " is NEWER than the latest available version ", $system_version['version']); $msg = "pfSense version " . $system_version['version'] . " is available (downgrade)\n\n"; break; default: printf("%s\n", 'Error comparing installed with latest version available'); log_error("Error comparing installed with latest version available"); break; > // package check $package_list = get_pkg_info('all', true, true); $installed_packages = array_filter($package_list, function($v) < return (isset($v['installed']) && isset($v['name'])); >); if (empty($installed_packages)) < printf("%s\n", 'No packages installed'); log_error("No packages installed, exiting"); exit; >foreach ($installed_packages as $pkg) < if (isset($pkg['installed_version']) && isset($pkg['version'])) < //printf("%s%s%s\n", $pkg['shortname'], ': ', $pkg['installed_version']); $version_compare = pkg_version_compare($pkg['installed_version'], $pkg['version']); if ($version_compare != '=') < $p++; $pmsg .= "\n".$pkg['shortname'].': '.$pkg['installed_version'].' ==>'.$pkg['version']; if ($version_compare == '>') < $pmsg .= ' (downgrade)'; >printf("%s%s%s%s%s\n", $pkg['shortname'], ': ', $pkg['installed_version'], ' ==> ', $pkg['version']); > > > if ($p > 0) < $msg = $msg . "The following updates are available and can be installed using System >Package Manager:\n" . $pmsg; > // check for updates to builtin packages exec("/usr/sbin/pkg upgrade -n | /usr/bin/sed -ne '/UPGRADED/,/^$/p'", $output, $retval); if (($retval == 0) && (count($output))) < $msg .= "\n\n" . "Some packages are part of the base system and will not show up in Package Manager. If any such updates are listed below, run `pkg upgrade` from the shell to install them:\n\n"; array_shift($output); $msg .= implode("\n", array_map('ltrim', $output)); >if (!empty($msg)) < log_error("Updates were found - sending email"); notify_via_smtp($msg); >log_error("Update check complete"); ?>

      При успешном сохранении файла увидите сообщение “File saved successfully.”. Для проверки можно выйти на директорию выше и зайти обратно или обновите окно веб-браузера (F5).

      Переходим в меню: “Diagnostics > Command Prompt”

      и выполняем добавленный нами скрипт

      /usr/local/bin/php -q /root/pkg_check.php

      В моём случае скрипт нашёл два обновления и указал с какой на какую версию

      arpwatch: 0.2.0_1 ==> 0.2.0_2 openvpn-client-export: 1.4.21 ==> 1.4.22

      и сразу же пришло уведомление на почту. Если не пришло сообщение, настраиваем в главном меню: “System > Advanced > Notifications”, как настроить читаем в статье “Настройка уведомлений в Pfsense по электронной почте GMail“

      Теперь надо настроить CRON для автоматического выполнения. я настроил проверку на 12 часов дня, чтобы до конца рабочего дня было время подумать когда обновлять или обновиться сразу.

      Установка и настройка pfSense

      Как установить и настроить программный маршрутизатор pfSense, ограничить скорость и добавить новые функции.

      Введение

      Что такое pfSense

      Многофункциональный программный маршрутизатор-брандмауэр pfSense разработан компанией Netgate на базе ОС FreeBSD.

      pfSense распространяется в нескольких редакциях: программный Community Edition (CE), в виде аппаратного appliance NetGate. Для Community Edition доступна коммерческая поддержка по цене от $400 до $800 в год. В 2021 году запущен pfSense Plus Software, в пользу которого предполагается сфокусировать основные усилия по разработке новых функций.

      pfSense имеет модульную архитектуру и свой пакетный менеджер. Основные функции: маршрутизация, в т.ч. динамическая, межсетевое экранирование, NAT, DHCP-сервер, балансировка нагрузки, VPN (включая OpenVPN и L2TP), dDNS, PPPoE, IDS, проксирование и другое. Поддерживается построение отказоустойчивого кластера. Есть встроенный мониторинг, журналирование и построение отчетов.

      Многие организации и домашние офисы используют pfSense для подключения к интернет-ресурсам. При этом часто используется бесплатная редакция Community Edition без техподдержки.

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

      Аппаратные требования

      CE можно установить как на bare metal, так и в виртуальной машине. Аппаратные требования диктуются необходимыми скоростями сетевых интерфейсов — от минимальных 500 МГц/512 МиБ для 10 Мб/с. до многоядерного 2+ ГГц/2 ГиБ для 1 Гб/с.

      Использование дополнительных функций и модулей требует увеличения количества ядер ЦПУ и объема ОЗУ. Для часто используемого подключения со скоростью 100 Мб/с. рекомендуется 1 ГГц/1 ГБ. Для более высоких скоростей также необходима шина PCIe, т.к. в противном случае ее предшественница будет узким местом.

      К размеру диска требования невысокие, но также зависят от используемых функций, минимальный размер — 8 ГБ. В остальном, pfSense построен на базе FreeBSD, поэтому список совместимого аппаратного обеспечения диктуется поддерживаемым во FreeBSD.

      Установка pfSense CE

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

      pfSense является кастомным решением для облачной платформы Selectel, поэтому есть ряд неочевидных нюансов.

      По состоянию на август 2021 года:

      • В настройках установочного образа необходимо указывать Linux вместо «Другая» (в противном случае получим ошибку Internal error Invalid image metadata. Error: Field value other is invalid).
      • Дистрибутив работает только с сетевыми дисками и не может установиться на сервер с локальным диском.
      • Другой нюанс заключается в том, что невозможно совместить установку через образ в панели управления и выбор сразу двух сетевых интерфейсов.

      Обходные пути — создание машины с двумя интерфейсами и подключение установочного ISO-образа через OpenStack CLI, либо установка с одним сетевым интерфейсом с последующим добавлением 2-го. Последний путь проще, им и пойдем.

      Загрузка образа

      На странице загрузки pfSense CE выбираем архитектуру AMD64 (64-bit) и тип образа DVD Image (ISO).

      Выполняем проверку целостности загруженного архива и распаковываем его:

      $ sha256sum=($(sha256sum Download/pfSense-CE-2.5.2-RELEASE-amd64.iso.gz)) && [ "$sha256sum" == "0266a16aa070cbea073fd4189a5a376d89c2d3e1dacc172c31f7e4e75b1db6bd" ] && echo "Ok" || echo "Something wrong" $ gunzip Download/pfSense-CE-2.5.2-RELEASE-amd64.iso.gz 

      Значение контрольной суммы sha256 0266a16aa070cbea073fd4189a5a376d89c2d3e1dacc172c31f7e4e75b1db6bd смотрим на странице загрузки. В примере указана для актуальной на момент написания версии 2.5.2.

      После этого создаем и загружаем образ в хранилище в панели управления, указав ОС Linux:

      Установка и первоначальная настройка pfSense

      В разделе серверы «Облачной платформы» нажимаем кнопку «Создать сервер» вверху справа (или в центре, если это 1-й). Выбираем минимальную произвольную конфигурацию (1 vCPU/512 МиБ RAM/5 ГиБ Storage, 17,82 ₽/день по состоянию на август 2021) — в тестовых целях этого достаточно, для остальных случаев системные требования указаны выше.

      выбор конфигурации сервера

      Сеть на данном этапе оставляем как «Новая приватная сеть» — она будет у нас внутренней, адрес 192.168.1.0/24. Присвоим имя int_net, DHCP — выключим. Настройка шлюза в данном случае ни на что не влияет, но убрать его невозможно.

      После указания необходимых параметров нажимаем кнопку «Создать». Сервер конфигурируется и будет доступен через 30 секунд. Если вы случайно закрыли вкладку, где создавалась машина — не проблема, теперь сервер доступен в глобальном разделе «Серверы». Для взаимодействия с консолью сервера мы переходим в его карточку на вкладке «Серверы», далее открываем пункт «Консоль».

      Читаем и соглашаемся с авторскими правами.

      Выбор режима установки. На этом же этапе работы установщика можно задействовать и встроенный режим восстановления.

      Консоль системы не будет видна рядовым пользователям, нет смысла менять локализацию — оставляем по умолчанию.

      В зависимости от аппаратной архитектуры выбираем метод загрузки и разметки накопителя, для ВМ — BIOS.

      Наблюдаем за процессом установки.

      По окончании установки появится следующее окно.

      Нажав кнопку Yes, мы попадем в оболочку (Shell). Здесь можно выполнить любые настройки системы вручную. После окончания настроек вернуться в программу установку можно, выполнив команду exit. Обычно на этом этапе ничего менять не требуется, нажимаем No.

      Настройка сетей

      Для нашей лаборатории понадобится одна внешняя и одна внутренняя сети — для этого нужно добавить второй интерфейс. Запускаем оболочку, нажав Shell.

      И даем команду на выключение:

      # poweroff 

      В реальной жизни при установке на своем сервере этот этап не потребуется.

      На глобальной вкладке «Серверы» у виртуальной машины будет статус SHUTOFF.

      Далее рассмотрим сценарий подключения к провайдеру по IP, где нам выдана сеть по маске /29 (минимально возможная на облачной платформе Selectel).

      Переходим в глобальную панель «Сеть»->«Публичные подсети» и нажимаем «Создать подсеть».

      В панели управления можно выбрать маски от /29 до /27. Если ваш провайдер предоставил сеть с маской /30, сценарий подключения и настройки будет аналогичным.

      На этом этапе система выделит сеть (в примере — 94.26.250.176/29) и назначит шлюз по умолчанию (94.26.250.177). Он понадобится дальше при настройке WAN-интерфейса. В реальной жизни это будет адрес шлюза провайдера.

      Добавим новую сеть к нашему серверу, «Серверы» -> «Порты» -> «Добавить порт» -> «Выберите сеть» -> «Добавить порт».

      Система выделила адрес нашему серверу (94.26.250.178) — теперь у него, как и полагается настоящему интернет-шлюзу, два интерфейса — внешний, включенный в глобальную, и внутренний, включенный в нашу локальную сеть.

      Поддержки VLAN в «Облачной платформе» Selectel нет, отказываемся и переходим к настройке интерфейсов.
      Интерфейсом vtnet0 наш сервер смотрит внутрь сети, vtnet1 — наружу.

      Для применения настроек и продолжения установки нажимаем клавишу y.

      В консоли pfSense присвоим выданный ранее внешний адрес (WAN-интерфейс).

      Пункт 2-Set Iface IP -> 1-WAN -> DHCP -> N -> Enter IP-Address -> Enter mask -> Enter gateway.

      Следом система предложит изменить настройки IPv6. В нашем сценарии это не требуется, настройки не меняем.

      Утвердительно отвечаем на вопрос «Do you want to revert to HTTP as the webConfigurator protocol?» и 3-4 секунды ожидаем применения конфигурации.

      Проверяем доступность шлюза провайдера (эта возможность доступна в пункте 7).

      После выбора пункта Ping host указываем адрес шлюза провайдера или, в нашей лаборатории, платформы.

      Тестовый клиент

      Следующим этапом добавим в нашу лабораторию тестовую машину (Ubuntu 18/1 vCPU/2 ГиБ RAM/8 ГиБ Storage). Она будет имитировать нашего пользователя и подключаться к интернет-ресурсам через pfSense. С нее же будем продолжать настройку pfSense.

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

      Нажимаем кнопку «Создать», секунд 15-20 ожидаем рождения сервера и подключаемся к его консоли.

      Если при создании машины была использована внутренняя сеть (int_net), можно либо пересоздать машину полностью, либо удалить этот сетевой интерфейс и добавить внешний, после чего выполнить на машине.

      # ip link set eth0 down # ip addr add 94.26.250.179/29 dev eth0 # ip link set eth0 up # ip route add default via 94.26.250.177 dev eth0 # ping 94.26.250.177 # ping ya.ru 
      Обновление ОС

      Хоть это и тестовая машина, первым делом обновляем ее:

      # apt-get update -y && apt-get upgrade -y 

      Если обновилось ядро, машину следует перезагрузить.

      Установка GUI

      Настройка графики выходит за рамки статьи, подробнее о ней можно найти на тематических сайтах, перечень команд может быть таким.

      # apt install tasksel slim -y # tasksel install ubuntu-desktop # adduser myuser # systemctl start slim 

      По графической части: на платформе Selectel для переключения между консолями ВМ можно использовать сочетание Alt+left/right arrow или F1, привычное Ctrl+Alt+Fn может не сработать.

      Здесь же создается рядовой пользователь, дабы исключить дальнейшую работу под root’ом.

      Переключение сетевого интерфейса

      После запуска графического интерфейса переносим наш десктоп во внутреннюю сеть, для чего на вкладке «Порты» сервера удаляем внешний интерфейс и подключаем внутреннюю сеть — int_net (это лучше делать на выключенной машине — systemctl poweroff).

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

      В нашей лаборатории это не нужно, наш DHCP работает на pfSense и именно он должен задавать сетевые параметры клиента. Поведение гостевой машины меняется командой.

      $ sudo touch /etc/cloud/cloud-init.disabled 

      Netplan в облачной платформе использоваться не должен, поэтому для включения DHCP на интерфейсе машины редактируем файл.

      /etc/network/interfaces.d/50-cloud-init.cfg 

      Приводим к виду:

      Проверка:
      Посмотреть текущий ip-адрес можно командой ip a[ddress], а проверить настройки, полученные от DHCP-сервера командой.

      less /var/lib/dhcp/dhclient..leases 

      Адрес DHCP-сервера можно узнать так:

      адрес dhcp

      Если по какой-то причине при создании машины в сети int_net был включен DHCP, на этапе перед выключением или перезагрузкой машины DHCP в этой сети необходимо выключить, в противном случае адреса будет раздавать хост 192.168.1.2 или .3. После этого приводим настройки cloud-init и сетевого интерфейса как указано выше.

      9 шагов мастера настройки pfSense

      Запускаем браузер, переходим по адресу 192.168.1.1 — мы оказываемся в веб-интерфейсе pfSense. Вводим имя/пароль по умолчанию (admin/pfsense), запускается мастер настройки, состоящий из 9 шагов. При базовой настройке необходимо поменять только небольшое количество настроек.

      Баннер вверху напоминает о необходимости изменить пароль по умолчанию на свой. На 6-м шаге мастер настройки предложит поменять пароль, поэтому сейчас можно баннер проигнорировать.

      Видим приветствие мастера настройки.

      Шаг 1. Начало настройки

      начало настройки

      Шаг 2. Указание имени и домена шлюза

      В мастере указываем имя и домен нашего шлюза (шаг 2, например, mygw02 & myorg.ru), DNS-серверы (напр., dns.google — 8.8.4.4 & 8.8.8.8).

      Предостережение! В РФ планируют заблокировать DNS от Google, Cloudflare и DoH — учитывайте при настройке DNS.

      выбор имени домена и шлюза

      Шаг 3. Настройка синхронизации времени

      Настраиваем синхронизацию времени по NTP и часовой пояс: сервер можно оставить предложенный по умолчанию, либо выбрать по своим предпочтениям с подходящим stratum (достаточно и уровня 3).

      часовой пояс

      Шаг 4. Настройка PPPoE

      На этом шаге, как правило, ничего менять не приходится. В дополнение к внешнему адресу указываем upstream gateway — вышестоящий (провайдерский) шлюз, если он не был задан ранее. Здесь же указываются настройки PPPoE, если их требует провайдер. Некоторые операторы требуют подключение только с конкретного MAC-адреса, его также можно указать на этом шаге.

      настройка pppoe

      Шаг 5. Настройка внутреннего интерфейса

      Относится к настройке внутреннего интерфейса. У нас он уже настроен, переходим к следующему шагу.

      внутренний интерфейс

      Шаг 6. Пароль администратора

      На этом шаге система потребует изменить пароль администратора:

      смена админского пароля

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

      Шаг 7. Применение настроек

      И затем предложит применить настройки.

      применение настроек и перезагрузка

      Шаг 8. Продолжение применения настроек

      применение новой конфигурации

      Шаг 9. Настройка завершена

      завершение настройки

      Нажимаем кнопку Finish — мастер настройки успешно завершил работу. На этом этапе наш pfSense уже готов выполнять базовые функции интернет-шлюза — можем в браузере зайти в поисковик и запустить сетевой спидометр.

      В дальнейшем (например, после сброса к заводским настройкам: Diagnostics -> Factory Defaults), мастер можно запустить из меню System -> Setup Wizard.

      Интерфейс pfSense

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

      дашборд pfSense

      Его отрисовка занимает некоторое время, экран открывается не мгновенно.

      Дашборд гибко настраивается — можно добавлять новые элементы, удалять неиспользуемые, настраивать имеющиеся.

      Структура меню

      Функций pfSense выполняет множество, настройки сгруппированы:

      • Кнопка с логотипом pfSense — переход на дашборд.
      • System — общие системные настройки; управление маршрутизацией, сертификатами, обновлением; пакетный менеджер.
      • Interfaces — маппинг и настройка интерфейсов.
      • Firewall — файерволлинг — настройка NAT и правил брандмауэра; здесь же настраивается шейпинг.
      • Services — дополнительные функции, запущенные отдельными демонами (DHCP Server/Relay, DNS; NTP, SNMP, etc), в т.ч. установленными из менеджера пакетов (Squid, Snort, Nagios (NRPE) и Zabbix агенты).
      • VPN — настройки служб удаленного доступа (IPsec, L2TP, OpenVPN) вынесены сюда.
      • Status — текущее состояние компонентов — счетчики, значения и состояние реального времени, а также графики мониторинга и системные журналы.
      • Diagnostics — различные диагностические инструменты (архивация/восстановление, выключение/перезапуск, ping/traceroute/DNS lookup и много чего еще).
      • Mygw02.myorg.ru — что-то вроде кнопки help/about.

      Изменение темы

      Многим нравятся «темные» темы, они есть в pfSense, меню System -> General Setup, раздел webConfigurator:

      выбор тёмной темы

      В статье будет чередоваться темная и светлая тема, используемая по умолчанию.

      Локализация

      Раздел System -> General Setup, секция Localization, параметр Language, позволяют переключать язык веб-интерфейса.

      Пример интерфейса на русском языке:

      интерфейс на русском

      Диагностика

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

      Системные журналы

      Доступны на вкладке Status -> System Logs. Журналов много, но они разделены по категориям. В первую очередь будут интересны журналы Status/System Logs/System/General и Status/System Logs/Firewall.

      Графики нагрузки

      Оценить нагрузку на систему удобно в графическом виде в разделе Status/Monitoring.

      мониторинг нагрузки сети значения нагрузки

      Последующая диагностика заключается во внимательном анализе значений в счетчиках на вкладке «Статусы» и использовании диагностических инструментов на вкладке «Диагностика».

      Сброс пароля

      Если пароль от pfSense потерялся, в консоли его можно сбросить до значения по умолчанию в пункте 3 (Reset webConfigurator password):

      сброс пароля

      Расширенные настройки

      Правила брандмауэра

      Настройки по умолчанию запрещают подключение к pfSense из глобальной сети и разрешают доступ клиентов наружу с использованием трансляции адресов NAT (точнее, наиболее частый вариант динамической NAT — NAPT по RFC 2663, она же NAT overload, маскарадинг или PAT — здесь и далее будем говорить только об этом типе).

      Для примера создадим разрешающее правило для подключения к pfSense из дома (правило задается на интерфейсе WAN), затем ограничим подключения пользователей только серфингом (правило задается на интерфейсе LAN).

      В pfSense есть удобный механизм описания переменных через псевдонимы, создадим такой для нашего домашнего офиса и портов tcp:80/443, включим регистрацию пакетов. В пункте Aliases меню Firewall на вкладке IP, открывающейся по умолчанию, нажмем кнопку +Add:

      создание псевдонима

      Откроется редактор псевдонимов для IP-адресов:

      редактор псевдонимов для ip

      В редакторе присвоим имя псевдониму, укажем тип (Host(s)) и добавим IP-адреса.

      На вкладке Ports аналогичным образом создаем правило для служб:

      Указываем понятное имя, даем описание, добавляем один или несколько портов:

      добавление портов

      В подсказке указан удобный способ создания псевдонима для диапазона портов.

      Для настройки того-то, переходим Firewall/Rules/.

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

      В этом случае достаточно скорректировать только один псевдоним.

      корректировка псевдонима

      На примере выше для адреса источника и портов назначения мы выбрали заданные ранее псевдонимы.

      После настройки не забываем нажимать Apply Changes. Теперь можно проверять подключение.

      Аналогично на интерфейсе LAN создаем правило для серфинга:

      создаем правило для серфинга

      Далее на этом же интерфейсе создаем правила для DNS (udp:53) и (необязательно, облегчает диагностику) ICMP (достаточно echo request, echo reply).

      Теперь отключаем правила по умолчанию, нажав на зеленую галочку(1), Save (2, если менялся порядок правил) и Apply Changes (3):

      правила для dns

      Проверяем доступ к web-сайтам, затем к нестандартным портам, используя ресурс portquiz.net:

      Пинг работает, имена сайтов разрешаются, http по tcp/80 открыт, а на нестандартный порт tcp/8080 соединение не проходит:

      проверка портов

      О чем также видим записи в журнале:

      запись о проверке в журнале

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

      Трансляция портов

      Частая задача — публикация какого-либо сервиса, размещенного в локальной сети — например, почтового или веб-сервера.

      Тестовый веб-сервер

      Тема не относится к pfSense, но в нашей лаборатории пока нет никакого ресурса для публикации, создадим его.

      apt install apache2 php libapache2-mod-php 

      В каталоге /var/www/html создадим файл demo.php следующего содержания:

      На этом создание тестового сервера завершено, осталось убедиться, что веб-сервер запущен:

      systemctl status apache2 

      Настройка NAT на pfSense

      Производится в меню в Firewall. Ранее мы использовали стандартный http-порт для удаленного подключения к pfSense, поэтому настройку трансляции продемонстрируем для другого порта (tcp:8080) и с заменой его номера.

      настройка nat

      Как видим, все настраивается очень просто. pfSense слушает TCP порт 8080 и транслирует его в tcp:80 тестового хоста 192.168.1.3, на котором мы в предыдущем шаге настроили веб-сервер.

      Настоятельно рекомендуется составлять описание всех правил, так как со временем их может стать много и разобраться в них будет сложно.

      Проверка

      Проверяем наши настройки, зайдя на WAN-адрес pfSense с указанием порта 8080.

      проверка nat

      Внутренний веб-сервер ответил на публичном адресе. Добавляем название демо-странички и видим, что она также успешно опубликована.

      страница опубликована

      Обновление

      pfSense разработан не только как многофункциональный комбайн, разработчики уделили большое внимание простоте работы с ним. Обновление выполняется легко — в разделе System Information на дашборде либо в меню System -> Update.

      обновление системы сравнение версий

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

      Если готовы к экспериментам, можно обновиться до экспериментальной ветки.

      Так выглядит процедура обновления с предыдущей версии (2.4.5):

      По окончании процесса система автоматически перезагрузится:

      перезагрузка после обновления

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

      распаковка новых пакетов

      Виртуализация

      pfSense отлично работает в виртуальной среде. Надо понимать, что возможно несущественное снижение производительности, но заметным оно будет только на маломощной физической машине, к которой предъявляются требования не столько по ЦПУ/ОЗУ, сколько по шине и сетевым интерфейсам.

      При запуске в среде ESXi/vSphere от VMware полезно установить гостевого агента. Предоставляется эта возможность пакетом Open-VM-Tools, устанавливаемым через пакетный менеджер в штатном репозитории.

      В виртуальной среде может возникнуть проблема с низкой производительностью и/или искажением пакетов. Это происходит из-за того, pfSense пытается использовать аппаратное ускорение сетевого адаптера.

      В Xen и KVM делать это не имеет смысла, поэтому функцию hardware checksum offload, настройка которой доступна в меню System, пункт Advanced, вкладка Networking, следует отключить и затем перезагрузить pfSense.

      отключаем функцию

      Hardware Checksum Offloading также рекомендовано отключать для адаптеров Realtek.

      Внутренняя маршрутизация

      Если внутренняя сеть сегментирована, нужно научить pfSense маршрутам в нее. «Из коробки» доступна статическая маршрутизация, конфигурируемая в меню System -> Routing.

      Сперва на вкладке System -> Routing -> Gateways создается внутренний шлюз(ы), например, myIntGW, затем маршрут добавляется на вкладке System -> Routing -> Static Routes:

      внутренняя маршрутизация

      После внесения настроек не забываем нажимать кнопку Apply changes.

      Для сценария динамической маршрутизации потребуется установка дополнительного пакета, например, frr (Free Range Routing aka FRRouting aka FRR), в котором реализована поддержка многих протоколов: GP, OSPF, RIP, IS-IS, PIM, LDP, BFD, Babel, PBR, OpenFabric и VRRP.

      После установки пакета в меню Services добавляются разделы для настройки протоколов, например, FRR-OSPF:

      новые настройки протоколов

      Перед настройкой динамической маршрутизации в Global Settings нужно включить FRR и задать обязательный мастер-пароль:

      задаем мастер-пароль

      SSL

      В пункте Advanced меню System производится переключение интерфейса управления между HTTP и HTTPS.

      переключение на https

      При установке генерируется самоподписанный сертификат на 13 месяцев.

      В этом же меню кнопка Add/Sign позволяет сформировать запрос к корпоративному центру сертификации и затем установить полученный сертификат, либо перевыпустить самоподписанный сертификат на другой срок.

      Обычно интерфейс pfSense оставляют доступным только из внутренней сети, не разрешая прямой доступ извне. Если по какой-то причине потребуется сделать наоборот, для LAN-интерфейса нужно будет отключить правило антиблокировки — Anti-lockout rule, расположенное в System/Advanced/Admin Access/webConfigurator.

      Для подключения из глобальной сети потребуется ранее созданное правило на WAN-интерфейсе. Также удобно использовать сертификат, выпущенный публично доверенным центром сертификации, например, Let’s encrypt. Так как срок действия такого сертификата только 90 дней, его нужно будет часто обновлять.

      Для автоматизации перевыпуска в репозитории есть пакет acme:

      автоматизация перевыпуска сертификата

      Ограничение полосы

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

      Управляется в разделе Firewall > Traffic Shaper на вкладке Limiters.

      Измерим текущую скорость.

      ограничение скорости

      Как указано выше, заходим в пункт Traffic Shapers меню Firewall, переходим на вкладку Limiters и создаем 2 ограничителя.

      создаем ограничители

      Включаем правило (1), присваиваем понятное имя (2), указываем ширину полосы (3). Для входящего и исходящего ограничения создаются отдельные правила (4).

      Непосредственное включение шейпера выполняется в правилах брандмауэра (FirewallRules). Так как нас интересует ограничение со стороны наших внутренних клиентов, правила необходимо модифицировать/добавлять для интерфейса LAN. При этом лимиты рассматриваются со стороны интерфейса: In — входящий, Out — исходящий из интерфейса трафик. Таким образом, для ограничения трафика от клиента наружу используется правило In.

      Таким образом, открываем пункт Rules меню Firewall, переходим на вкладку LAN и в секции Extra Options нужного (вновь созданного или существующего) правила включаем отображение расширенных настроек (кнопка Display Advanced):

      расширенные настройки

      Примечание: в примере на картинке выше использовано существующее правило, разрешающее внутренним клиентам использовать подключение по https.

      В предпоследней секции расширенных настроек (1, In/Out pipe) указываем правило для входящего в интерфейс (2) и исходящего из него трафика (3).

      правила для трафика

      После сохранения и применения настроек pfSense сообщает о фоновой перезагрузке правил фильтрации и предлагает проверить статус на странице Status/Filter Reload.

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

      проверка скорости с ограничением

      Дополнительные функции

      Функциональность pfSense расширяется большим количеством пакетов, доступных через пакетный менеджер, их несколько десятков, вот лишь некоторые:

      • apcupsd — демон для связи с ИБП APC (ныне Schneider);
      • arpwatch — мониторинг активности MAC/IP-адресов;
      • cron — планировщик;
      • filer — файловый менеджер;
      • squid/lightsquid/squidGuard — прокси, генератор отчетов и фильтр;
      • lldpd — предоставляет поддержку обнаружения по Link Layer Discovery Protocol, кроме того поддерживает проприетарные CDP, EDP, FDP, NDP;
      • mailreport — рассылка отчета по почте;
      • net-snmp — GUI для SNMP;
      • nmap — nmap, классика сканирования сетей;
      • snort/suricata/zeek — решения класса IDS/IPS.

      Необходимо понимать, что за использование этих функций нужно заплатить повышением производительности оборудования. Интенсивное использование VPN может потребовать дополнительно одно или более ядер ЦПУ, а IDS/IPS также потребует дополнительно 1-2 ГиБ ОЗУ.

      Проведем демонстрацию расширения функциональности на популярном сканере nmap. В меню System заходим в пункт Package Manager, вкладка Available Packages, рядом с пакетом NMap нажимаем на кнопку Install, ждем и получаем встроенный сканер:

      расширение функциональности

      В меню Diagnostics добавился пункт NMap, запускаем:

      запуск nmap

      Во внутреннем сегменте нашей лаборатории только один хост, он был успешно обнаружен и просканирован:

      успешное сканирование

      Заключение

      В статье мы познакомились с решением для реализации производительного, надежного и функционального программного маршрутизатора — pfSense. Научились его устанавливать, настраивать, ограничивать скорости, добавлять новые функции, устанавливая пакеты расширения.

      Зарегистрируйтесь в панели управления

      И уже через пару минут сможете арендовать сервер, развернуть базы данных или обеспечить быструю доставку контента.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *