From: Tom Eastep <teastep@shorewall.net>
To: Patrick McHardy <kaber@trash.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: Fri, 07 Jul 2006 17:36:48 -0700 [thread overview]
Message-ID: <44AEFE20.3020307@shorewall.net> (raw)
In-Reply-To: <44AA3496.5050909@trash.net>
[-- Attachment #1: Type: text/plain, Size: 3135 bytes --]
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.
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?
-Tom
--
Tom Eastep \ Nothing is foolproof to a sufficiently talented fool
Shoreline, \ http://shorewall.net
Washington USA \ teastep@shorewall.net
PGP Public Key \ https://lists.shorewall.net/teastep.pgp.key
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 254 bytes --]
next prev parent reply other threads:[~2006-07-08 0:36 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 [this message]
2006-07-08 3:01 ` Patrick McHardy
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=44AEFE20.3020307@shorewall.net \
--to=teastep@shorewall.net \
--cc=bdschuym@pandora.be \
--cc=kaber@trash.net \
--cc=netfilter-devel@lists.netfilter.org \
/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.