From: Pablo Neira Ayuso <pablo@netfilter.org>
To: Florian Westphal <fw@strlen.de>
Cc: netfilter-devel@vger.kernel.org
Subject: Re: [PATCH nft 04/10] tests: fix up meta l4proto change for ip6 family
Date: Wed, 17 May 2017 20:13:45 +0200 [thread overview]
Message-ID: <20170517181345.GA23132@salvia> (raw)
In-Reply-To: <20170516105221.GD16290@breakpoint.cc>
Hi Florian,
On Tue, May 16, 2017 at 12:52:21PM +0200, Florian Westphal wrote:
> Pablo Neira Ayuso <pablo@netfilter.org> wrote:
> > On Tue, May 09, 2017 at 05:51:16PM +0200, Florian Westphal wrote:
> > > After previous commit nft generates meta l4proto for ipv6 dependencies
> > > instead of checking the (first) nexthdr value.
> > >
> > > This fixes up all tests cases accordingly except one which fails with
> > >
> > > ip6/reject.t: ... 12: 'ip6 nexthdr 6 reject with tcp reset' mismatches 'meta l4proto 6 reject with tcp reset'
> > > This will be fixed by removing the implicit dependency in a followup patch.
> > >
> > > Signed-off-by: Florian Westphal <fw@strlen.de>
>
> [..]
> > > # icmpv6 type echo-request
> > > bridge test-bridge input
> > > - [ payload load 2b @ link header + 12 => reg 1 ]
> > > - [ cmp eq reg 1 0x0000dd86 ]
> > > - [ payload load 1b @ network header + 6 => reg 1 ]
> > > + [ meta load l4proto => reg 1 ]
> > > [ cmp eq reg 1 0x0000003a ]
> > > [ payload load 1b @ transport header + 0 => reg 1 ]
> > > [ cmp eq reg 1 0x00000080 ]
> >
> > I think this is not correct.
> >
> > Before this patch, we restricted this to match on IPv6 traffic.
>
> Right.
>
> > Now, we can match an IPv4 packet carrying an ICMPv6 protocol, this is
> > obviously handcrafted (incorrect) packet, but this rule would match.
>
> Yes. I am not sure what the correct or desired behaviour is.
>
> Simply speaking we're asked to check if transport protocol is 58, and
> thats what this does.
Right. However, this forces users to add explicit ip6 nexthdr or meta
protocol to restrict this IPv6. My concern here is that this loose
matching, for something that from a protocol perspective is incorrect.
> If you prefer special-casing this I can look into it, probably
> best thing is to inject 'meta nfproto ip6' test.
For inet, yes. For bridge and netdev families the dependency would be
different.
I suspect this is working now with your patches to use meta for the
implicit dependencies. I would point to the patch that adds icmp and
icmpv6 as protocol to proto_inet_service as the one removing this
special casing.
> What would you expect in these cases (note, ip family):
>
> a) add rule filter input meta l4proto icmpv6
> b) add rule filter input meta l4proto icmpv6 icmpv6 type echo-request
> c) add rule filter input icmpv6 type echo-request
>
> with master only a) is accepted.
> With patch #1 of the series, b) is also accepted.
b) and c) are equivalent. Since c) should generate both the meta
protocol and the meta l4proto dependency.
Then, we should allow this too:
meta protocol ip meta l4proto icmpv6
so we can match IPv4 packets that container ICMPv6 packet. I know,
this is crazy, but we should users to match this. A handcrafted packet
may look like that.
I think this logic should be placed somewhere at payload_gen_dependency().
next prev parent reply other threads:[~2017-05-17 18:13 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-09 15:51 [PATCH nft 00/10] switch l4 dependency to meta l4proto Florian Westphal
2017-05-09 15:51 ` [PATCH nft 01/10] src: allow update of net base w. meta l4proto icmpv6 Florian Westphal
2017-05-16 10:04 ` Pablo Neira Ayuso
2017-05-09 15:51 ` [PATCH nft 02/10] src: ipv6: switch implicit dependencies to meta l4proto Florian Westphal
2017-05-16 10:05 ` Pablo Neira Ayuso
2017-05-09 15:51 ` [PATCH nft 03/10] src: treat ip6 nexthdr as a protocol Florian Westphal
2017-05-16 10:28 ` Pablo Neira Ayuso
2017-05-09 15:51 ` [PATCH nft 04/10] tests: fix up meta l4proto change for ip6 family Florian Westphal
2017-05-16 10:22 ` Pablo Neira Ayuso
2017-05-16 10:52 ` Florian Westphal
2017-05-17 18:13 ` Pablo Neira Ayuso [this message]
2017-05-17 18:36 ` Florian Westphal
2017-05-17 18:49 ` Pablo Neira Ayuso
2017-05-17 20:55 ` Florian Westphal
2017-05-09 15:51 ` [PATCH nft 05/10] tests: meta: add icmpv6 test case Florian Westphal
2017-05-09 15:51 ` [PATCH nft 06/10] netlink_delinearize: reject: remove dependency for tcp-resets Florian Westphal
2017-05-09 15:51 ` [PATCH nft 07/10] tests: add ip reject with tcp and check for mark too Florian Westphal
2017-05-16 10:29 ` Pablo Neira Ayuso
2017-05-16 10:40 ` Florian Westphal
2017-05-09 15:51 ` [PATCH nft 08/10] src: add a comment wrt. reject dependency insertion Florian Westphal
2017-05-09 15:51 ` [PATCH nft 09/10] src: ip: switch implicit dependencies to meta l4proto too Florian Westphal
2017-05-16 10:35 ` Pablo Neira Ayuso
2017-05-09 15:51 ` [PATCH nft 10/10] tests: fix up meta l4proto change for ip family Florian Westphal
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=20170517181345.GA23132@salvia \
--to=pablo@netfilter.org \
--cc=fw@strlen.de \
--cc=netfilter-devel@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).