Назад | Перейти на главную страницу

использование pf для фильтрации пакетов и dummynet ipfw для ограничения пропускной способности одновременно

Я хотел бы спросить, можно ли использовать pf для фильтрации всех пакетов (включая использование altq для формирования трафика) и dummynet ipfw для одновременного ограничения пропускной способности определенных IP-адресов или подсетей.

Я использую FreeBSD 10 и не могу найти однозначного ответа на этот вопрос. Поиск в Google возвращает такие результаты, как:

Затем упоминается, что этот патч мог быть снова объединен с FreeBSD, но я не могу его найти.

Несомненно, pfsense использует оба брандмауэра одновременно, поэтому вопрос в том, возможно ли это со стандартной FreeBSD 10 (и где получить патч, если он все еще необходим).

Для справки вот образец того, что у меня есть на данный момент и как я загружаю вещи

/etc/rc.conf

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"

/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

/etc/ipfw.rules

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, с несколькими заметно другими алгоритмами планирования и меньшим объемом динамического пространства правил.