我想问一下,对所有的数据包过滤(包括使用altq进行stream量整形)和ipfw的dummynet是否可以同时使用pf来限制某些IP或子网是否合适。
我使用的是FreeBSD 10,我找不到明确的答案。 谷歌search返回的结果如下:
然后有一个提到这个补丁可能已经合并到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
正式的,你不能混用它们。 非官方的各种咒语和牺牲可能会导致一个工作,虽然岌岌可危,configuration。 无论如何,这只是不推荐。
另外,为什么不使用一个或另一个? 我假设你想让dummynet做一些每个端点的带宽限制,如果不是PF可能就是你所需要的。 同样,IPFW几乎可以完成PF可以做的所有事情,有一些显着不同的调度algorithm和较less的dynamic规则空间。