Reliable PCI wifi cards, and layer 7 filtering

Chris Buechler cmb at pfsense.org
Fri Feb 11 07:57:39 UTC 2011


On 2/10/2011 5:23 PM, Joe Holden wrote:
> On 10/02/2011 15:56, Jeremy Chadwick wrote:
>> (I was considering cross-posting this to freebsd-pf but decided against
>> it, instead starting here first.  Please keep me CC'd as I'm not
>> subscribed to freebsd-net)
>>
>> I'm looking into the possibility of using my home FreeBSD box as my home
>> firewall/NAT box, to replace my Linksys E2000 router (which runs Linux,
>> specifically the TomatoUSB firmware).
>>
>> I plan on using pf for the NAT and firewall layer.  ipfw will not be
>> used (I have long since moved away from it).  I've got solutions for
>> everything except two items:
>>
>> 1) Wireless hardware support
>>     - What consumer PCI cards are known to be reliable and have good
>>       support on FreeBSD?  It looks like anything that relies on ath(4)
>>       might be a good choice, but I'm not sure what specific chipset is
>>       considered decent/worthwhile, or if there's a specific model of
>>       card from Vendor X(tm) which works great.
>>     - The card and driver need to support both 802.11b and 802.11g
>>       simultaneously.  802.11n (for the future) would also be good.
>>     - Driver or OS needs 128-bit WEP -- this is not a joke, I really do
>>       have devices which do not do WPA or WPA2.
>>     - MAC address filtering is needed too, but it looks like that's
>>       already available (looking at ifconfig(8) man page).
>>
>> 2) Layer 7 filtering
>>     - Specifically, the ability to block outbound packets in real-time
>>       which contain certain data in the TCP data portion of the packet.
>>     - More details: there are some HTTP-based requests which some
>>       software I use on XP submits to a server pool to return some ads.
>>       Filtering by IP address isn't possible since the A records of
>>       the FQDN often change.  The software in question does not honour
>>       system proxy settings, so use of a proxy (Apache, squid, etc.)
>>       as a solution will not work.
>>     - I filter based on GET parameters or the HTTP: Host header.  Thus,
>>       the matching mechanism doesn't need regex; simple substring 
>> matches
>>       (e.g. strcasestr()) would work fine.
>>     - Linux has kernel modules called ipt_web and xt_web which can do
>>       exactly this.  They return TCP RST to the client which submit the
>>       packet, and never forwarding the original packet out the WAN.
>>
> There is 'ipfw-classifyd' which has been somewhat improved by the 
> pfsense team in order to support pf - I don't have the exact url to 
> hand, but IIRC it is hosted on googlecode somewhere.
It's in git at rcs.pfsense.org in the tools repo.

Note divert + PF in FreeBSD is also specific to patches we use that 
aren't in stock FreeBSD yet, you can easily apply those to RELENG_8_1 
though. Kernel patches are also in the tools repo.

All of it's BSD licensed, you're welcome to grab whatever you want to use.



More information about the freebsd-net mailing list