Date: Fri, 9 Nov 2001 13:14:27 -0800 From: "Crist J. Clark" <cristjc@earthlink.net> To: Luigi Rizzo <rizzo@aciri.org> Cc: Archie Cobbs <archie@dellroad.org>, freebsd-net@FreeBSD.ORG Subject: Re: Fixing ipfw(8)'s 'tee' Message-ID: <20011109131427.X51134@blossom.cjclark.org> In-Reply-To: <20011109063143.A12504@iguana.aciri.org>; from rizzo@aciri.org on Fri, Nov 09, 2001 at 06:31:43AM -0800 References: <20011107154601.A301@blossom.cjclark.org> <200111082338.fA8NcBK41060@arch20m.dellroad.org> <20011109021747.A11137@iguana.aciri.org> <20011109033753.T51134@blossom.cjclark.org> <20011109063143.A12504@iguana.aciri.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Nov 09, 2001 at 06:31:43AM -0800, Luigi Rizzo wrote: > > > You can implement the above by replacing all terminal actions > > > (accept or deny) with "tee" and "divert" statements, respectively. > > > > Ouch. I think that you can get any behavior you want in that manner, > > but that could be one long and ugly rule set. > > why do you think it is "long" ? it is a one-by-one replacement. Almost, it can be more like adding one or two extra rules for every existing rule. For example, if I want to watch all traffic going to specific 'host' with one monitoring daemon and all traffic going to a certain 'subnet' on another (both of which are only subsets of the total traffic going through the gateway), 1000 tee 8668 ip from any to <host> 1050 tee 8668 ip from <host> to any 1100 tee 8669 ip from any to <subnet> 1150 tee 8669 ip from <subnet> to host # Allowed outgoing TCP 2000 pass tcp from any to any 80,8080,110,<whatever> out via <oif> setup keep-state # Allowed outgoing UDP 2100 pass udp from any to any 53,123,<whatever> out via <oif> keep-state # Pass everything on inner interface 3000 pass ip from any to any via <iif> # Pass incoming HTTP 4000 pass tcp from any to any 80 in via <oif> 4100 pass tcp from any 80 to any out via <oif> . . . # Default deny and log 65000 deny log ip from any to any Would work if 'tee' fell through. But in reality, the above rules do not work that way. The method you mention works, but the rules become, # Allowed outgoing TCP 2000 tee 8668 tcp from any to <host> 80,8080,110,<whatever> out via <oif> setup keep-state 2100 tee 8669 tcp from any to <subnet> 80,8080,110,<whatever> out via <oif> setup keep-state 2200 pass tcp from any to any 80,8080,110,<whatever> out via <oif> setup keep-state # Allowed outgoing UDP 2300 tee 8668 udp from any to <host> 53,123,<whatever> out via <oif> keep-state 2400 tee 8669 udp from any to <subnet> 53,123,<whatever> out via <oif> keep-state 2500 pass udp from any to any 53,123,<whatever> out via <oif> keep-state # Pass everything on inner interface 3100 tee 8668 ip from any to <host> via <iif> 3100 tee 8668 ip from <host> to any via <iif> 3200 tee 8669 ip from any to <subnet> via <iif> 3200 tee 8669 ip from <subnet> to any via <iif> 3300 pass ip from any to any via <iif> # Pass incoming HTTP 4000 tee 8668 tcp from any to <host> 80 in via <oif> 4100 tee 8668 tcp from <host> 80 to any out via <oif> 4200 tee 8669 tcp from any to <subnet> 80 in via <oif> 4300 tee 8669 tcp from <subnet> 80 to any out via <oif> 4400 pass tcp from any to any 80 in via <oif> 4500 pass tcp from any 80 to any out via <oif> . . . # Default deny and log 61000 divert 8668 log ip from any to <host> 62000 divert 8668 log ip from <host> to any 63000 divert 8669 log ip from any to <subnet> 64000 divert 8669 log ip from <subnet> to any 65000 deny log ip from any to any Which seems a bit unweildy. Each single 'pass' or 'deny' rule from the first example has become several rules. Then again, I may be overlooking a much easier way to write these. -- Crist J. Clark | cjclark@alum.mit.edu | cjclark@jhu.edu http://people.freebsd.org/~cjc/ | cjc@freebsd.org To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20011109131427.X51134>