Здравствуйте, решился я снести IPWF с сервера FreeBSD 5.3 и заменить более функциональным PF, установка и настройка правил фильтрации прошла без проблем. Но вот незадача в IPFW был DUMMYNET и полностью справлялся со своими обязанностями. Все попытки настройки ALTQ окончились безрезультатно. От ALTQ требуется раздавать всем пользователям с одинаковой скоростью (приоритетом), а руководству с большей.
Все решения, которые были найдены, направлены на различные виды трафика, а мне нужно на пользователей.
На сервере только нат средствами PF, две сетевухи, канал 120Кбит (если кто-то начинает качать то можно повеситься), установка прокси-сервера не предполагается.Ядро
device pf #PF OpenBSD packet-filter firewall
device pflog #logging support interface for PF
device pfsync #synchronization interface for PF
options ALTQ
options ALTQ_CBQ # Class Bases Queueing
options ALTQ_RED # Random Early Drop
options ALTQ_RIO # RED In/Out
options ALTQ_HFSC # Hierarchical Packet Scheduler
options ALTQ_CDNR # Traffic conditioner
options ALTQ_PRIQ # Priority Queueing
options ALTQ_DEBUG
options HZ=1000
rc.conf
pf_enable="YES"
pf_rules="/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
pflog_program="/sbin/pflogd"
Один из нерабочих конфигов pf.conf (с ALTQ), вариантов перепробовал много, ALTQ на локальном и на внешнем интерфейсах, CBQ и PRIQ все безрезультатно.
ExtIF="rl1"
PrivIF="rl0"
ExtIP="xxx.xxx.xxx.xxx"
PrivNet="192.168.0.0/24"
NoGoIP="{ 192.168.0.0/16, 127.0.0.0/8, 10.0.0.0/8, 0.0.0.0/8, 169.254.0.0/16, 204.152.64.0/23, 224.0.0.0/3 }"
boss="192.168.0.124"
allnet="192.168.0.0/24"
scrub in all
altq on $PrivIF priq bandwidth 120Kb queue { allnet boss }
queue allnet priority 2 priq(default)
queue boss priority 10
nat on $ExtIF from $PrivNet to any -> $ExtIP
block in quick inet6 all
block out quick inet6 all
pass in quick on lo0 all
pass out quick on lo0 all
block in quick on $ExtIF from $NoGoIP to any
block out quick on $ExtIF from any to $NoGoIP
block out on $ExtIF all
pass in quick on $ExtIF inet proto tcp from any to $boss flags S/SA modulate state queue boss
pass out quick on $ExtIF inet proto tcp from $boss to any flags S/SA modulate state queue boss
pass out on $ExtIF inet proto tcp from { $allnet !$boss } to any flags S/SA modulate state queue allnet
pass out quick on $ExtIF inet proto { udp, icmp } from $boss to any keep state queue boss
pass out on $ExtIF inet proto { udp, icmp } from { $allnet !$boss } to any keep state queue allnet
P.S Если у вас есть рабочий pf.conf c altq поделитесь пожалуйста!