Я хотел бы спросить, можно ли использовать pf для фильтрации всех пакетов (включая использование altq для формирования трафика) и dummynet ipfw для одновременного ограничения пропускной способности определенных IP-адресов или подсетей.
Я использую FreeBSD 10 и не могу найти однозначного ответа на этот вопрос. Поиск в Google возвращает такие результаты, как:
Затем упоминается, что этот патч мог быть снова объединен с FreeBSD, но я не могу его найти.
Несомненно, pfsense использует оба брандмауэра одновременно, поэтому вопрос в том, возможно ли это со стандартной FreeBSD 10 (и где получить патч, если он все еще необходим).
Для справки вот образец того, что у меня есть на данный момент и как я загружаю вещи
ifconfig_vtnet0="inet 80.224.45.100 netmask 255.255.255.0 -rxcsum -txcsum"
ifconfig_vtnet1="inet 10.20.20.1 netmask 255.255.255.0 -rxcsum -txcsum"
defaultrouter="80.224.45.1"
gateway_enable="YES"
firewall_enable="YES"
firewall_script="/etc/ipfw.rules"
pf_enable="YES"
pf_rules="/etc/pf.conf"
WAN1="vtnet0"
LAN1="vtnet1"
set skip on lo0
set block-policy return
scrub on $WAN1 all fragment reassemble
scrub on $LAN1 all fragment reassemble
altq on $WAN1 hfsc bandwidth 30Mb queue { q_ssh, q_default }
queue q_ssh bandwidth 10% priority 2 hfsc (upperlimit 99%)
queue q_default bandwidth 90% priority 1 hfsc (default upperlimit 99%)
nat on $WAN1 from $LAN1:network to any -> ($WAN1)
block in all
block out all
antispoof quick for $WAN1
antispoof quick for $LAN1
pass in on $WAN1 inet proto icmp from any to $WAN1 keep state
pass in on $WAN1 proto tcp from any to $WAN1 port www
pass in on $WAN1 proto tcp from any to $WAN1 port ssh
pass out quick on $WAN1 proto tcp from $WAN1 to any port ssh queue q_ssh keep state
pass out on $WAN1 keep state
pass in on $LAN1 from $LAN1:network to any keep state
ipfw -q -f flush
ipfw -q add 65534 allow all from any to any
ipfw -q pipe 1 config bw 2048KBit/s
ipfw -q pipe 2 config bw 2048KBit/s
ipfw -q add pipe 1 ip from 10.20.20.4 to any via vtnet1 in
ipfw -q add pipe 2 ip from any to 10.20.20.4 via vtnet1 out
Официально смешивать их нельзя. Неофициально различные заклинания и жертвоприношения могут привести к рабочей, хотя и ненадежной конфигурации. В любом случае это просто не рекомендуется.
Кроме того, почему бы просто не использовать одно или другое? Я предполагаю, что вы хотите, чтобы dummynet ограничил пропускную способность для каждой конечной точки, если не PF, возможно, все, что вам нужно. Точно так же IPFW может делать почти все, что может делать PF, с несколькими заметно другими алгоритмами планирования и меньшим объемом динамического пространства правил.