Руководство FreeBSD
Пред. | Глава 26. Межсетевые экраны | След.

# 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: 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` и показан здесь:

    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. Не забудьте проверить архивы списка рассылки перед тем, как задавать вопрос.

Пред. | Начало | След.
Пакеты межсетевых экранов | Уровень выше | * IPFILTER (IPF)

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

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