0

PF & ALTQ -> FreeBSD # Установка

PF (Packet Filter) — межсетевой экран OpenBSD портированный для FreeBSD
ALTQ (Alternate Queuing) — аналог QoS (Quality of Service), механизм управления очередями пакетов и пропускной способностью каналов.

PF можно получить подгрузив его как модуль ядра, но для того чтобы он заработал с поддержкой ALTQ придётся пересобрать ядро.

cd /usr/src/sys/i386/conf
cp GENERIC MYKERN

редактируем MYKERN, вставляем:

device          pf
device          pflog
device          pfsync
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
options         ALTQ_CDNR
options         ALTQ_PRIQ # включает Priority Queuing (PRIQ). PRIQ всегда пропускает трафик из более высокой очереди первым
options         ALTQ_NOPCC # включает поддержку SMP для ALTQ. Эта опция необходима для SMP систем
options         ALTQ_DEBUG

собираем наше ядро:

cd /usr/src/
make buildkernel KERNCONF=MYKERN
make installkernel KERNCONF=MYKERN

reboot, проверяем:

uname -a

далее в rc.conf добавляем:

pf_enable="YES"
pf_program="/sbin/pfctl"
pf_rules="/etc/pf.rules"
pflog_enable="YES"
pflog_logfile="/var/log/pf.log"
pflog_program="sbin/pflogd"

теперь PF будет стартовать при загрузке ОС.
Минимальный конфиг /etc/pf.conf для того чтобы заработал интернет

if_ext = "rl0" # имя вашего сетевого интерфейса
net_ext = "10.200.217.1" # ip во внешней сетке
net_loc = "192.168.0.0/24" # ваша внутренняя сетка

nat on $if_ext from $net_loc to any -> $net_ext
pass in all
pass out all

Работа с PF:

pfctl -f /etc/pf.conf # Загрузить правила
tcpdump -n -e -ttt -r /var/log/pf.log  # Смотреть лог
pfctl -s [ rules | nat | state ]     # Смотреть правила фильтрации, правила NAT или таблицу состояний соединений
pfctl -vnf /etc/pf.conf # Проверить /etc/pf.conf на наличие ошибок, но сами наборы правил не загружать

Настройка и администрирование Windows/Linux, сетевого оборудования D-link, cisco | hotbits.ru

likealol

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

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