From: Patrick McHardy <kaber@trash.net>
To: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Cc: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>,
Shan Wei <shanwei@cn.fujitsu.com>,
YOSHIFUJI Hideaki <hideaki.yoshifuji@gmail.com>,
David Miller <davem@davemloft.net>,
Alexey Dobriyan <adobriyan@gmail.com>,
Yasuyuki KOZAKAI <yasuyuki.kozakai@toshiba.co.jp>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
netfilter-devel@vger.kernel.org
Subject: Re: [RFC PATCH net-next 0/7 v2]IPv6:netfilter: defragment
Date: Thu, 25 Mar 2010 11:25:05 +0100 [thread overview]
Message-ID: <4BAB3A01.1090909@trash.net> (raw)
In-Reply-To: <4BAAE496.8000701@linux-ipv6.org>
YOSHIFUJI Hideaki wrote:
> (2010/03/24 5:10), Jozsef Kadlecsik wrote:
>
>> On Wed, 24 Mar 2010, YOSHIFUJI Hideaki wrote:
>>
>>>> In this case without conntrack, IPv6 would send an ICMPv6 message,
>>>> so in my opinion the transparent thing to do would be to still send
>>>> them. Of course only if reassembly is done on an end host.
>>>
>>> Well, no. conntrack should just forward even uncompleted fragments
>>> to next process (e.g. core ipv6 code), and then the core would send
>>> ICMP error back. ICMP should be sent by the core ipv6 code according
>>> to decision of itself, not according to netfilter.
>>
>> But what state could be associated by conntrack to the uncompleted
>> fragments but the INVALID state? In consequence, in any sane setup, the
>> uncompleted fragments will be dropped silently by a filter table rule
>> and no ICMP error message will be sent back.
>>
>> Therefore I think iff the destination of the fragments is the host
>> itself, then conntrack should generate an ICMP error message. But that
>> error message must be processed by conntrack to set its state and then
>> the fate of the generated packet can be decided by a rule.
>
> Well.... no.
>
> First of all. in "sane" setup, people should configure according
> to their own requirements. They may or may not want send back
> icmp packet. And, even if the core is to send icmp back, the
> state would be correctly assigned.
>
> We cannot (and should not) do something "cleaver" (excluding
> packet drops) in conntrack in PRE_ROUTING chain.
>
> One reason is that in PRE_ROUTING context, we can NOT determine
> if the address we see in the IP header is really the final
> destination. The overall situation is the same even if the
> routing entry corresponding the "current" destination points
> the node itself, or even if the node is configured as host.
Agreed, that is a problem.
> It might seems that we could do something in the "filter"
> table in LOCAL_IN, FORWARD or LOCAL_OUT (after routing header
> process).
>
> But well, we unfortunately cannot do this (at least
> automatically) because even in LOCAL_IN, the final
> destination has not been decided until we process all
> of extension headers.
>
> Sending ICMP in netfilter (especially in conntrack) is too
> patchy, and is not right. If we do the right thing (and
> I believe we should do so), I'd propose to have hooks
> around handlers inside ip6_input_finish().
>
> ...I remember that I was thinking about this before.
>
> For my conclusion, first option is just to drop
> uncompleted fragments as we do today. Second option
> would be to forward them to the next process so that
> core code could send ICMPv6 etc. or, we could have
> new code to send ICMPV6_TIME_EXCEED in REJECT target.
> In longer term, I think it is better to introduce
> per-exthdr hooks.
We'd need something that allows to process the incomplete fragments
long enough so they can actually reach the IPv6 core (people usually
don't allow incoming fragments when using conntrack).
But for now you've convinced me that this patch is wrong.
next prev parent reply other threads:[~2010-03-25 10:25 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-27 6:39 [RFC PATCH net-next 0/7 v2]IPv6:netfilter: defragment Shan Wei
2010-03-10 17:13 ` YOSHIFUJI Hideaki
2010-03-11 9:16 ` Shan Wei
2010-03-13 13:47 ` YOSHIFUJI Hideaki
2010-03-15 16:27 ` Patrick McHardy
2010-03-23 16:28 ` YOSHIFUJI Hideaki
2010-03-23 17:16 ` Patrick McHardy
2010-03-23 18:58 ` YOSHIFUJI Hideaki
2010-03-23 20:10 ` Jozsef Kadlecsik
2010-03-25 4:20 ` YOSHIFUJI Hideaki
2010-03-25 9:23 ` Jozsef Kadlecsik
2010-03-25 14:14 ` YOSHIFUJI Hideaki
2010-03-25 10:25 ` Patrick McHardy [this message]
2010-03-25 8:38 ` Pascal Hambourg
2010-03-25 9:13 ` Shan Wei
2010-03-25 10:07 ` Jozsef Kadlecsik
2010-03-25 10:20 ` Patrick McHardy
2010-03-25 2:22 ` Shan Wei
2010-03-23 15:05 ` Patrick McHardy
2010-03-25 2:28 ` Shan Wei
2010-03-25 4:19 ` YOSHIFUJI Hideaki
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=4BAB3A01.1090909@trash.net \
--to=kaber@trash.net \
--cc=adobriyan@gmail.com \
--cc=davem@davemloft.net \
--cc=hideaki.yoshifuji@gmail.com \
--cc=kadlec@blackhole.kfki.hu \
--cc=netdev@vger.kernel.org \
--cc=netfilter-devel@vger.kernel.org \
--cc=shanwei@cn.fujitsu.com \
--cc=yasuyuki.kozakai@toshiba.co.jp \
--cc=yoshfuji@linux-ipv6.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).