From: Florian Westphal <fw@strlen.de>
To: Leonardo Bras <leonardo@linux.ibm.com>
Cc: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>,
netdev@vger.kernel.org, Roopa Prabhu <roopa@cumulusnetworks.com>,
bridge@lists.linux-foundation.org,
Florian Westphal <fw@strlen.de>,
linux-kernel@vger.kernel.org,
Jozsef Kadlecsik <kadlec@netfilter.org>,
coreteam@netfilter.org, netfilter-devel@vger.kernel.org,
"David S. Miller" <davem@davemloft.net>,
Pablo Neira Ayuso <pablo@netfilter.org>
Subject: Re: [Bridge] [PATCH v4 2/2] net: br_netfiler_hooks: Drops IPv6 packets if IPv6 module is not loaded
Date: Fri, 30 Aug 2019 22:55:41 +0200 [thread overview]
Message-ID: <20190830205541.GR20113@breakpoint.cc> (raw)
In-Reply-To: <20190830181354.26279-3-leonardo@linux.ibm.com>
Leonardo Bras <leonardo@linux.ibm.com> wrote:
> A kernel panic can happen if a host has disabled IPv6 on boot and have to
> process guest packets (coming from a bridge) using it's ip6tables.
>
> IPv6 packets need to be dropped if the IPv6 module is not loaded.
>
> Signed-off-by: Leonardo Bras <leonardo@linux.ibm.com>
> ---
> net/bridge/br_netfilter_hooks.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/net/bridge/br_netfilter_hooks.c b/net/bridge/br_netfilter_hooks.c
> index d3f9592f4ff8..5e8693730df1 100644
> --- a/net/bridge/br_netfilter_hooks.c
> +++ b/net/bridge/br_netfilter_hooks.c
> @@ -493,6 +493,8 @@ static unsigned int br_nf_pre_routing(void *priv,
> brnet = net_generic(state->net, brnf_net_id);
> if (IS_IPV6(skb) || is_vlan_ipv6(skb, state->net) ||
> is_pppoe_ipv6(skb, state->net)) {
> + if (!ipv6_mod_enabled())
> + return NF_DROP;
> if (!brnet->call_ip6tables &&
> !br_opt_get(br, BROPT_NF_CALL_IP6TABLES))
> return NF_ACCEPT;
No, thats too aggressive and turns the bridge into an ipv6 blackhole.
There are two solutions:
1. The above patch, but use NF_ACCEPT instead
2. keep the DROP, but move it below the call_ip6tables test,
so that users can tweak call-ip6tables to accept packets.
Perhaps it would be good to also add a pr_warn_once() that
tells that ipv6 was disabled on command line and
call-ip6tables isn't supported in this configuration.
I would go with option two.
WARNING: multiple messages have this Message-ID (diff)
From: Florian Westphal <fw@strlen.de>
To: Leonardo Bras <leonardo@linux.ibm.com>
Cc: netfilter-devel@vger.kernel.org, coreteam@netfilter.org,
bridge@lists.linux-foundation.org, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org,
Pablo Neira Ayuso <pablo@netfilter.org>,
Jozsef Kadlecsik <kadlec@netfilter.org>,
Florian Westphal <fw@strlen.de>,
Roopa Prabhu <roopa@cumulusnetworks.com>,
Nikolay Aleksandrov <nikolay@cumulusnetworks.com>,
"David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH v4 2/2] net: br_netfiler_hooks: Drops IPv6 packets if IPv6 module is not loaded
Date: Fri, 30 Aug 2019 22:55:41 +0200 [thread overview]
Message-ID: <20190830205541.GR20113@breakpoint.cc> (raw)
In-Reply-To: <20190830181354.26279-3-leonardo@linux.ibm.com>
Leonardo Bras <leonardo@linux.ibm.com> wrote:
> A kernel panic can happen if a host has disabled IPv6 on boot and have to
> process guest packets (coming from a bridge) using it's ip6tables.
>
> IPv6 packets need to be dropped if the IPv6 module is not loaded.
>
> Signed-off-by: Leonardo Bras <leonardo@linux.ibm.com>
> ---
> net/bridge/br_netfilter_hooks.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/net/bridge/br_netfilter_hooks.c b/net/bridge/br_netfilter_hooks.c
> index d3f9592f4ff8..5e8693730df1 100644
> --- a/net/bridge/br_netfilter_hooks.c
> +++ b/net/bridge/br_netfilter_hooks.c
> @@ -493,6 +493,8 @@ static unsigned int br_nf_pre_routing(void *priv,
> brnet = net_generic(state->net, brnf_net_id);
> if (IS_IPV6(skb) || is_vlan_ipv6(skb, state->net) ||
> is_pppoe_ipv6(skb, state->net)) {
> + if (!ipv6_mod_enabled())
> + return NF_DROP;
> if (!brnet->call_ip6tables &&
> !br_opt_get(br, BROPT_NF_CALL_IP6TABLES))
> return NF_ACCEPT;
No, thats too aggressive and turns the bridge into an ipv6 blackhole.
There are two solutions:
1. The above patch, but use NF_ACCEPT instead
2. keep the DROP, but move it below the call_ip6tables test,
so that users can tweak call-ip6tables to accept packets.
Perhaps it would be good to also add a pr_warn_once() that
tells that ipv6 was disabled on command line and
call-ip6tables isn't supported in this configuration.
I would go with option two.
next prev parent reply other threads:[~2019-08-30 20:55 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-30 18:13 [Bridge] [PATCH v4 0/2] Drop IPV6 packets if IPv6 is disabled on boot Leonardo Bras
2019-08-30 18:13 ` Leonardo Bras
2019-08-30 18:13 ` [Bridge] [PATCH v4 1/2] netfilter: Terminate rule eval if protocol=IPv6 and ipv6 module is disabled Leonardo Bras
2019-08-30 18:13 ` Leonardo Bras
2019-08-30 20:58 ` [Bridge] " Florian Westphal
2019-08-30 20:58 ` Florian Westphal
2019-09-03 16:46 ` [Bridge] " Leonardo Bras
2019-09-03 16:46 ` Leonardo Bras
2019-09-03 16:49 ` [Bridge] " Pablo Neira Ayuso
2019-09-03 16:49 ` Pablo Neira Ayuso
2019-09-03 16:56 ` [Bridge] " Leonardo Bras
2019-09-03 16:56 ` Leonardo Bras
2019-09-03 17:05 ` [Bridge] " Florian Westphal
2019-09-03 17:05 ` Florian Westphal
2019-09-03 19:31 ` [Bridge] " Pablo Neira Ayuso
2019-09-03 19:31 ` Pablo Neira Ayuso
2019-09-03 19:48 ` [Bridge] " Florian Westphal
2019-09-03 19:48 ` Florian Westphal
2019-09-03 20:19 ` [Bridge] " Pablo Neira Ayuso
2019-09-03 20:19 ` Pablo Neira Ayuso
2019-09-03 20:35 ` [Bridge] " Florian Westphal
2019-09-03 20:35 ` Florian Westphal
2019-09-03 20:55 ` [Bridge] " Pablo Neira Ayuso
2019-09-03 20:55 ` Pablo Neira Ayuso
2019-09-03 20:55 ` [Bridge] " Pablo Neira Ayuso
2019-09-03 20:55 ` Pablo Neira Ayuso
2019-08-30 18:13 ` [Bridge] [PATCH v4 2/2] net: br_netfiler_hooks: Drops IPv6 packets if IPv6 module is not loaded Leonardo Bras
2019-08-30 18:13 ` Leonardo Bras
2019-08-30 20:55 ` Florian Westphal [this message]
2019-08-30 20:55 ` Florian Westphal
2019-08-31 4:42 ` [Bridge] " Leonardo Bras
2019-08-31 4:42 ` Leonardo Bras
2019-08-31 8:43 ` [Bridge] " Florian Westphal
2019-08-31 8:43 ` 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=20190830205541.GR20113@breakpoint.cc \
--to=fw@strlen.de \
--cc=bridge@lists.linux-foundation.org \
--cc=coreteam@netfilter.org \
--cc=davem@davemloft.net \
--cc=kadlec@netfilter.org \
--cc=leonardo@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=netfilter-devel@vger.kernel.org \
--cc=nikolay@cumulusnetworks.com \
--cc=pablo@netfilter.org \
--cc=roopa@cumulusnetworks.com \
/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.