From: Patrick McHardy <kaber@trash.net>
To: Tom Eastep <teastep@shorewall.net>
Cc: Netfilter Development Mailinglist
<netfilter-devel@lists.netfilter.org>,
Bart De Schuymer <bdschuym@pandora.be>
Subject: Re: RFC: Disable defered bridge hooks by default
Date: Sat, 08 Jul 2006 05:01:35 +0200 [thread overview]
Message-ID: <44AF200F.9000204@trash.net> (raw)
In-Reply-To: <44AEFE20.3020307@shorewall.net>
Tom Eastep wrote:
> Patrick McHardy wrote:
>
>
>>+Why: The defered output hooks are a bad layering violation causing
>>+ lots of unusual and broken behaviour on bridge devices.
>>+ Examples include broken QoS classifation using the MARK or
>>+ CLASSIFY targets, broken behaviour with the IPsec policy match,
>>+ broken connection tracking with VLAN on a bridge, ...
>>+
>>+ Their only use is to enable bridge output port filtering within
>>+ iptables with the physdev match, which can just as well be done by
>>+ combining iptables and ebtables using netfilter marks.
>
>
> Patrick,
>
> Once again, netfilter marks are the solution of last resort. This is
> becoming very painful for those of us who produce general Netfilter
> configuration tools. The situation is exacerbated by the fact that
> ebtables doesn't support modifying the mark value via logical AND/OR and
> the other fwmark consumers (tc, ip) don't allow a mask when testing the
> fwmark value.
I understand your problems perfectly, one of my netfilter backgrounds
is creating (proprietary) high-level tools as well (aka typical
applicance vendor). I know the problems getting along with netfilter
marks and specifying reasonable limits, but this stuff has created
so much problems that I just don't care. If we need more bits, so be
it, and introducing bitwise operations to ebtables MARK can only be
a good thing anyway (and for that matter, in every other spot using
nfmark).
> Be that as it may, I'm having difficulty trying to apply your proposed
> approach to Shorewall.
>
> Here's an example of a forwarding rule in Shorewall:
>
> ACCEPT foo bar tcp 25
>
> 'foo' and 'bar' are "zone" names and in a bridged configuration each may
> be associated with a different port on a bridge. Today, there is a
> single rule that sends all 'foo' -> 'bar' packets to a separate chain
> (this isn't the exact rule is but it illustrates the point):
>
> iptables -A FORWARD -i bridge -o bridge -m physdev \
> --physdev-in <foo port> --physdev-out <bar port> -j foo2bar
>
> Given that the ebtables filter table FORWARD chain is traversed before
> the iptables filter table FORWARD chain, that single iptables command
> can be replaced by:
>
> ebtables -A FORWARD -o <bar port> -j mark \
> --set-mark <bar mark> # --or-mark would be real handy here
>
> iptables -A FORWARD -i <bridge> -o <bridge> -m physdev \
> --physdev-in <foo port> -m mark --mark <bar mark> -j foo2bar
>
> The Shorewall rule listed above then creates:
>
> iptables -A foo2bar -p tcp --dport 25 -j ACCEPT
>
> At the end of the foo2bar chain is an unconditional rule that is
> determined by the effective foo->bar policy specified by the user;
> policy values include DROP, REJECT, ACCEPT and CONTINUE (CONTINUE is
> used for nested zones).
>
> A similar approach is taken for locally-generated packets. There is a
> single rule to direct all 'fw' to 'bar' traffic to the 'fw2bar' chain
> ("fw" is the default name for the zone comprised of the local system):
>
> iptables -A OUTPUT -o <bridge> -m physdev \
> --physdev-out <bar port> -j fw2bar
>
> As with forwarding, the fw2bar chain ends with a rule that enforces the
> fw->bar policy.
>
> Predictably, the Shorewall rule:
>
> ACCEPT fw bar tcp 25
>
> generates:
>
> iptables -A fw2bar -p tcp --dport 25 -j ACCEPT
>
> I see no sensible way to eliminate the --physdev-out usage in the OUTPUT
> chain using ebtables/iptables and marking. What am I missing?
I'm a lazy reader, so I didn't follow this entirely. But:
"-i <bridge> -o <bridge> "
implies you're using this for purely bridged traffic. The feature
we're going to remove only affects locally generated traffic exiting
on a bridge device, in that case iptables _can't_ know the output
port. But you can do your iptables matching, mark matching packets
and filter on the mark within ebtables. Hmm .. actually that makes
me wonder why purely bridged traffic wouldn't have the same problem,
I can only imagine that it does similar violations. Let me look
into this ..
next prev parent reply other threads:[~2006-07-08 3:01 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-07-04 9:26 RFC: Disable defered bridge hooks by default Patrick McHardy
2006-07-04 9:27 ` Patrick McHardy
2006-07-08 0:36 ` Tom Eastep
2006-07-08 3:01 ` Patrick McHardy [this message]
2006-07-10 9:56 ` Amin Azez
2006-07-11 8:28 ` Patrick McHardy
2006-07-11 9:33 ` Amin Azez
2006-07-11 20:34 ` Tom Eastep
2006-07-11 21:29 ` Patrick McHardy
2006-07-12 22:41 ` Tom Eastep
2006-07-13 7:35 ` Patrick McHardy
2006-07-13 14:11 ` Tom Eastep
2006-07-13 14:45 ` Patrick McHardy
2006-07-13 15:31 ` Tom Eastep
2006-07-15 14:32 ` Tom Eastep
2006-07-19 14:21 ` Patrick McHardy
2006-07-19 15:50 ` Tom Eastep
2006-07-19 16:02 ` Patrick McHardy
2006-07-13 9:56 ` Amin Azez
2006-07-12 6:16 ` Philip Craig
2006-07-13 0:20 ` Tom Eastep
2006-07-13 0:42 ` David Miller
2006-07-13 0:45 ` Tom Eastep
2006-07-13 9:45 ` Amin Azez
2006-07-13 7:31 ` Patrick McHardy
2006-07-13 7:46 ` Patrick McHardy
2006-07-13 8:12 ` Philip Craig
2006-07-13 8:36 ` Patrick McHardy
2006-07-13 14:11 ` Amin Azez
2006-07-13 14:50 ` Patrick McHardy
2006-07-13 15:29 ` Amin Azez
2006-07-19 16:36 ` Patrick McHardy
[not found] ` <44BE624E.5080307@ufomechanic.net>
2006-07-19 17:15 ` Patrick McHardy
[not found] <W8195318669268441152182124@nocme1bl6.telenet-ops.be>
2006-07-06 10:49 ` Patrick McHardy
2006-07-07 3:37 ` Patrick McHardy
-- strict thread matches above, loose matches on Subject: below --
2006-07-07 10:17 bdschuym@pandora.be
2006-07-07 10:24 ` Patrick McHardy
2006-07-13 12:56 bdschuym@pandora.be
2006-07-13 14:38 ` Patrick McHardy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=44AF200F.9000204@trash.net \
--to=kaber@trash.net \
--cc=bdschuym@pandora.be \
--cc=netfilter-devel@lists.netfilter.org \
--cc=teastep@shorewall.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.