В июле 2003 программный межсетевой экран OpenBSD, известный как PF, был портирован в FreeBSD и стал доступен из коллекции портов FreeBSD; первым релизом, где PF был интегрирован в основную систему, стала FreeBSD 5.3 в ноябре 2004. PF это полноценный межсетевой экран с широким набором возможностей, в котором есть опциональная поддержка ALTQ (Alternate Queuing). ALTQ предоставляет управление пропускной способностью Quality of Service (QoS).
Проект OpenBSD осуществляет замечательную работу по поддержке PF FAQ. Этот раздел руководства фокусируется на взаимосвязи PF и FreeBSD, предоставляя лишь общую информацию по его использованию. За более подробной информацией по использованию PF обратитесь к PF FAQ.
Дополнительные сведения о PF для FreeBSD можно получить с веб сайта:
http://pf4freebsd.love2party.net/
.
Чтобы загрузить PF как модуль ядра, добавьте следующую строку
в /etc/rc.conf
:
pf_enable="YES"
Далее, выполните стартовый скрипт:
#
/etc/rc.d/pf start
Учтите, модуль PF не загрузится, если он не сможет найти
конфигурационный файл с набором правил. По умолчанию размещение
файла с правилами следующее: /etc/pf.conf
.
Если путь к файлу отличается от вышеприведённого, то внесите в
/etc/rc.conf
строку вида:
pf_rules="/path/to/pf.conf
"
Файл с примерами конфигураций pf.conf
находится в каталоге /usr/share/examples/pf/
.
Модуль PF можно также загрузить вручную:
#
kldload pf.ko
Поддержка ведения логов для PF обеспечивается
модулем pflog.ko
, для загрузки которого добавьте
следующую строку в /etc/rc.conf
:
pflog_enable="YES"
и запустите на выполнение скрипт:
#
/etc/rc.d/pflog start
Если вам необходимы другие функциональные возможности PF, то придется добавить поддержку PF в ядро.
Включение PF путем компиляции с ядром FreeBSD не является обязательным требованием, однако вам может понадобиться одна из функциональных возможностей, которая не включена в загружаемый модуль. Например, pfsync(4) являет собой псевдоустройство, которое вносит определенные изменения в таблицу состояний, используемую PF. В дальнейшем, это псевдоустройство может быть скомпоновано с carp(4) чтобы создать отказоустойчивую систему межсетевых экранов на основе PF.
Пример параметров конфигурации ядра для включения PF находится в
/usr/src/sys/conf/NOTES
и показан здесь:
device pf device pflog device pfsync
device pf
включает поддержку межсетевого экрана
<<Packet Filter>> (pf(4)).
device pflog
включает необязательное сетевое
псевдоустройство pflog(4), которое может использоваться для
протоколирования трафика через bpf(4). Даемон pflogd(8)
может использоваться для сохранения протоколируемой информации
на диск.
device pfsync
включает необязательное
сетевое псевдоустройство pfsync(4), используемое для
отслеживания <<изменений состояния>>.
Для активации PF и pflog(4) во время загрузки в rc.conf(5) должны быть включены следующие переменные:
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" # Включить сетевой шлюз
Пакет PF читает конфигурацию из файла
pf.conf(5) (полный путь: /etc/pf.conf
);
пакеты отвергаются, пропускаются или модифицируются в соответствии с
правилами и определениями из этого файла. В стандартную поставку
FreeBSD входят несколько файлов с примерами конфигураций, которые
находятся в каталоге /usr/share/examples/pf/
.
За исчерпывающим описанием правил PF обратитесь
к PF FAQ.
Изучая PF FAQ, имейте в виду, что различные версии FreeBSD могут содержать разные версии pf. В настоящий момент FreeBSD использует ту же версию PF, которая включена в OpenBSD 4.1.
Список рассылки, посвящённый FreeBSD packet filter является хорошим местом, чтобы задавать вопросы по конфигурации и использованию пакета PF. Не забудьте проверить архивы списка рассылки перед тем, как задавать вопрос.
Для управления PF используйте утилиту pfctl(8). Ниже приведено несколько полезных команд (все возможные команды и опции приведены на странице справочника pfctl(8)):
Команда | Действие |
---|---|
pfctl -e | Включить PF |
pfctl -d | Выключить PF |
pfctl -F all -f /etc/pf.conf | Сбросить все правила (NAT, правила фильтрации, состояния
соединений, таблицы и т.д.) и загрузить новые с файла
/etc/pf.conf |
pfctl -s [ rules | nat | state ] | Отобразить правила фильтрации, правила NAT или таблицу состояний соединений |
pfctl -vnf /etc/pf.conf | Проверить /etc/pf.conf на наличие
ошибок, но сами наборы правил не загружать |
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
всегда первым пропускает трафик из очереди c более высоким
приоритетом.
options ALTQ_NOPCC
включает
поддержку SMP для ALTQ.
Эта опция необходима для SMP
систем.
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.