From: Gao feng <gaofeng@cn.fujitsu.com>
To: Patrick McHardy <kaber@trash.net>
Cc: netfilter-devel@vger.kernel.org, pablo@netfilter.org
Subject: Re: nat drop the icmp redirect packet
Date: Thu, 01 Dec 2011 08:59:56 +0800 [thread overview]
Message-ID: <4ED6D18C.7000802@cn.fujitsu.com> (raw)
In-Reply-To: <4ED67BB1.8020808@trash.net>
于 2011年12月01日 02:53, Patrick McHardy 写道:
> On 11/28/2011 02:12 AM, Gao feng wrote:
>> Hi
>>
>> In func nf_nat_icmp_reply_translation,the icmp packet will be droped when the nat is not finished.
>> pc A(whose gateway is C) send a icmp request to pc B.
>> When gw C receive this packet,it may return a icmp redirect packet to A.
>> BUT now,the icmp request packet has not go to POSTROUTING,So the nat is not finished.
>> Finally,the icmp redirect packet will be droped no matter the conn has nat or not.
>>
>> of course,the icmp redirect packet will be correct handled when nat is finished.
>>
>> Can somebody will give me some suggestion,
>> or should I just add a sysctl to let the user decide drop or receive this icmp redirect packet when nat is not finished?
>
> It doesn't matter whether the ICMP packet has gone through
> POST_ROUTING, the conntrack associated with the packet is
> that of the original packet causing the ICMP REDIRECT (or
> any other kind of ICMP error).
>
> Basically, we don't want hosts talking directly to each other
> *if* NAT has been set up since that would obviously break
> things. In the case you describe (only destination NAT setup
> completed, but null mapping) instead of dropping the packet,
> we could set up a null source mapping and let the packet
> through under the assumption that the hosts will then start
> communicating directly.
>
> This will break if the host receiving the ICMP REDIRECT ignores
> it though. What is the specific problem you're trying to solve?
>
Thanks Patrick!
As I said,in my case,the *first* ICMP REDIRECT packet will be dropped even
the system has no nat rules,because this REDIRECT packet is triggered
by the original packet in FORWARD chain(ip_forward),and when this REDIRECT
packet goto POSTROUTING chian(nf_nat_fn->nf_nat_icmp_reply_translation),the
original packet is still in FORWARD chain.So the original packet's conntrack
ONLY has IPS_DST_NAT_DONE.
I understand your mean,we should not let REDIRECT to take effect when this conntrack
has nat rule.
I just want to know is there some idea to avoid the first ICMP_REDIRECT packet being dropped?
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2011-12-01 0:59 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-28 1:12 nat drop the icmp redirect packet Gao feng
2011-11-28 1:23 ` Gao feng
2011-11-30 4:00 ` Gao feng
2011-11-30 18:53 ` Patrick McHardy
2011-12-01 0:59 ` Gao feng [this message]
2011-12-01 10:20 ` Patrick McHardy
2011-12-02 5:32 ` Gao feng
2011-12-02 12:58 ` Patrick McHardy
2011-12-05 1:18 ` Gao feng
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=4ED6D18C.7000802@cn.fujitsu.com \
--to=gaofeng@cn.fujitsu.com \
--cc=kaber@trash.net \
--cc=netfilter-devel@vger.kernel.org \
--cc=pablo@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.