Index of /handbook/firewalls-pf.html


26.4. Packet Filter Firewall (PF, межсетевой экран OpenBSD)

В июле 2003 программный межсетевой экран OpenBSD, известный как PF, был портирован в FreeBSD и стал доступен из коллекции портов FreeBSD; первым релизом, где PF был интегрирован в основную систему, стала FreeBSD 5.3 в ноябре 2004. PF это полноценный межсетевой экран с широким набором возможностей, в котором есть опциональная поддержка ALTQ (Alternate Queuing). ALTQ предоставляет управление пропускной способностью Quality of Service (QoS), позволяющее гарантировать пропускную способность для различных сервисов на основе фильтрующих правил. Проект OpenBSD поддерживает Руководство Пользователя PF, которое не было внесено в этот раздел руководства во избежание дублирования работы.

Информация по доступности PF для различных версий FreeBSD приведена ниже:

Версия FreeBSD Доступность PF
Версии до 4.X PF недоступен для релизов FreeBSD более старых, чем релизы из ветви 4.X.
Все версии ветви 4.X PF доступен как часть KAME.
Релизы 5.X до 5.3-RELEASE Для установки PF на эти версии FreeBSD может использоваться порт security/pf. Эти релизы предназначались для разработчиков и тех, кто желал ознакомиться с ранними версиями 5.X. Настоятельно рекомендуется обновление до 5.3-RELEASE или более свежих версий FreeBSD.
5.3-RELEASE и более свежие версии PF стал частью основной системы. Не используйте порт security/pf на этих версиях FreeBSD. Он не будет работать. Вместо этого воспользуйтесь поддержкой pf(4) в базовой системе.

Дополнительную информацию можно получить с веб сайта PF для FreeBSD: http://pf4freebsd.love2party.net/.

26.4.1. Включение PF

PF включен в базовую поставку FreeBSD версии 5.3 и выше в качестве отдельного загружаемого модуля. PF динамически подгружает модуль ядра если включена переменная rc.conf pf_enable="YES". Загружаемый модуль создан с включенным pflog(4).

Замечание: Модуль предполагает, что файл конфигурации вашего ядра содержит строки options INET и device bpf. Если не определен параметр NOINET6 для FreeBSD версий до 6.0-RELEASE и NO_INET6 для более поздних версий (например, в файле make.conf(5)), требуется также параметр options INET6.

После загрузки модуля или пересборки ядра с поддержкой PF, функциональность pf может управляться при помощи команды pfctl.

pf включается при помощи команды

# pfctl -e

Команда pfctl позволяет управлять правилами pf. Дополнительную информацию следует черпать из страницы справочника pfctl(8).

26.4.2. Параметры ядра

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

Пример параметров конфигурации ядра для включения PF находится в /usr/src/sys/conf/NOTES (/usr/src/sys/arch/conf/LINT для FreeBSD 4.X) и показан здесь:

device pf
device pflog
device pfsync

device pf включает поддержку межсетевого экрана ''Packet Filter''.

device pflog включает необязательное сетевое псевдоустройство pflog(4), которое может использоваться для протоколирования трафика через bpf(4). Даемон pflogd(8) может использоваться для сохранения протоколируемой информации на диск.

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

Эти настройки будут действовать только после сборки и установки нового ядра.

26.4.3. Доступные параметры rc.conf

Для активации PF во время загрузки в /etc/rc.conf должны быть включены следующие переменные:

pf_enable="YES"                 # Включить PF (загрузить модуль если необходимо)
pf_rules="/etc/pf.conf"         # определение правил для pf
pf_flags=""                     # дополнительные флаги для запуска pfctl
pflog_enable="YES"              # запустить pflogd(8)
pflog_logfile="/var/log/pflog"  # где pflogd должен сохранять протокол
pflog_flags=""                  # дополнительные флаги для запуска pflogd

Если за межсетевым экраном находится локальная сеть и необходимо передавать пакеты для компьютеров этой сети, или использовать NAT, включите также следующий параметр:

gateway_enable="YES"            # Включить сетевой шлюз

26.4.4. Включение ALTQ

ALTQ может быть включен только путем компилирования ядра FreeBSD с соответствующими параметрами. ALTQ поддерживается не всеми существующими драйверами сетевых карт. Для просмотра списка поддерживаемых устройств в вашем релизе FreeBSD обратитесь к странице справочника altq(4). Следующие параметры включат ALTQ и добавят дополнительную функциональность.

options         ALTQ
options         ALTQ_CBQ        # Class Bases Queuing (CBQ)
options         ALTQ_RED        # Random Early Detection (RED)
options         ALTQ_RIO        # RED In/Out
options         ALTQ_HFSC       # Hierarchical Packet Scheduler (HFSC)
options         ALTQ_PRIQ       # Priority Queuing (PRIQ)
options         ALTQ_NOPCC      # Required for SMP build

options ALTQ включает подсистему ALTQ.

options ALTQ_CBQ включает Class Based Queuing (CBQ). CBQ позволяет распределять пропускную способность соединений по классам или очередям для выставления приоритетов трафика на основе правил фильтрации.

options ALTQ_RED включает Random Early Detection (RED). RED используется для предотвращения перегрузки сети. RED вычисляет длину очереди и сравнивает ее с минимальной и максимальной границей очереди. Если очередь превышает максимум, все новые пакеты отбрасываются. В соответствии со своим названием, RED отбрасывает пакеты из различные соединений в произвольном порядке.

options ALTQ_RIO включает Random Early Detection In and Out.

options ALTQ_HFSC включает Hierarchical Fair Service Curve Packet Scheduler. Дополнительная информация о HFSC находится по адресу: http://www-2.cs.cmu.edu/~hzhang/HFSC/main.html.

options ALTQ_PRIQ включает Priority Queuing (PRIQ). PRIQ всегда пропускает трафик из более высокой очереди первым.

options ALTQ_NOPCC включает поддержку SMP для ALTQ. Эта опция необходима для SMP систем.

26.4.5. Создание правил фильтрации

Пакет PF читает конфигурацию из файла pf.conf(5); пакеты отвергаются, пропускаются или модифицируются в соответствии с правилами и определениями из этого файла. В стандартную поставку FreeBSD входит файл /etc/pf.conf, содержащий полезные примеры с комментариями.

Несмотря на наличие собственного для FreeBSD файла /etc/pf.conf, синтаксис его совпадает с OpenBSD. Отличное руководство по конфигурации pf, написанное группой разработки OpenBSD, расположено по адресу http://www.openbsd.org/faq/pf/.

Внимание: Изучая Руководство PF, имейте в виду, что различные версии FreeBSD содержат разные версии pf. pf в FreeBSD 5.X соответствует OpenBSD версии 3.5, в FreeBSD 6.X pf соответствует OpenBSD версии 3.7.

Список рассылки, посвящённый FreeBSD packet filter является хорошим местом, чтобы задавать вопросы по конфигурации и использованию пакета pf. Не забудьте проверить архивы списка рассылки перед тем, как задавать вопрос.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.


HIVE: All information for read only. Please respect copyright!
Hosted by hive йца: йХЕБЯЙЮЪ ЦНПНДЯЙЮЪ АХАКХНРЕЙЮ