All of lore.kernel.org
 help / color / mirror / Atom feed
From: Patrick McHardy <kaber@trash.net>
To: KOVACS Krisztian <hidden@sch.bme.hu>
Cc: jamal <hadi@cyberus.ca>, KOVACS Krisztian <hidden@balabit.hu>,
	Andreas Schultz <aschultz@warp10.net>,
	tproxy@lists.balabit.hu, netdev@vger.kernel.org
Subject: Re: [tproxy,regression] tproxy broken in 2.6.32
Date: Sat, 28 Nov 2009 16:46:57 +0100	[thread overview]
Message-ID: <4B1145F1.3090704@trash.net> (raw)
In-Reply-To: <20091128151515.GA20476@sch.bme.hu>

KOVACS Krisztian wrote:
> Hi,
> 
> On p, nov 27, 2009 at 11:05:32 -0500, jamal wrote:
>> On Fri, 2009-11-27 at 09:26 +0100, KOVACS Krisztian wrote:
>>> Hi,
>>>
>>> On Thu, 2009-11-26 at 18:19 +0100, Andreas Schultz wrote:
>>>> Hi,
>>>>
>>>> git bisect shows that TPROXY has been broken by commit
>>>> f7c6fd2465d8e6f4f89c5d1262da10b4a6d499d0, [PATCH] net: Fix RPF to work
>>>> with policy routing
>>>>
>>>> I had a look at the patch, and it seems logical that this would break TPROXY.
>>> Indeed, that's a good catch. If this is indeed the problem you should be
>>> able to work it around by disabling rpfilter on the ingress interface.
>>> Does it work that way?
>> Not familiar with tproxy, but I suspect the system doesnt see the mark
>> before policy routing happens. So probably the wrong route cache gets
>> created. Easy to validate by dumping the route cache.
>> If thats so, you have to set the mark in pre-route hook if it uses
>> iptables.
> 
> It's already on prerouting, so that's not the problem.
> 
> The problem is that for tproxy to work we've used to have a rule like
> this:
> 
> # ip rule add fwmark 1 lookup 100
> 
> plus a few iptables rules setting mark values.
> 
> The issue is that previously fib_validate_source ignored the mark set on
> the skb, and thus when fib_validate_source() did a FIB lookup, it all went
> fine, because it found a result of type RTN_UNICAST. However, with your
> change, and because of the ip rule above not being specific enough now
> it's returning with type RTN_LOCAL, and that's considered invalid and thus
> the skb is dropped.
> 
> The workaround is using more specific ip rules that include the ingress
> interface name:
> 
> # ip rule add dev eth0 fwmark 1 lookup 100

The root cause seems to be an invalid assumption, marks are often not
used in a symetric fashion as required by RPF.

Since this patch has already proven to break existing setups, I think
it should be reverted or the behaviour made optional with a default to
off.

  parent reply	other threads:[~2009-11-28 15:46 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <db81a9a20911230443h443b3c2l8fab5aef7b09cfa@mail.gmail.com>
     [not found] ` <1259137434.9191.3.camel@nienna.balabit>
2009-11-26 17:19   ` [tproxy,regression] tproxy broken in 2.6.32 Andreas Schultz
2009-11-27  8:26     ` KOVACS Krisztian
2009-11-27  9:11       ` Andreas Schultz
2009-11-27 16:05       ` jamal
2009-11-28 15:15         ` KOVACS Krisztian
2009-11-28 15:45           ` jamal
2009-11-28 18:50             ` KOVACS Krisztian
2009-11-28 19:26               ` jamal
2009-11-28 15:46           ` Patrick McHardy [this message]
2009-11-28 16:04             ` jamal
2009-11-28 17:07               ` Patrick McHardy
2009-11-28 17:36                 ` jamal
2009-11-28 19:05                   ` KOVACS Krisztian
2009-11-28 19:44                     ` jamal
2009-11-28 21:21                       ` David Miller
2009-11-28 22:20                         ` jamal
2009-11-29 20:35                       ` KOVACS Krisztian
2009-11-30 12:15                         ` jamal
2009-11-30 12:45                           ` KOVACS Krisztian
2009-11-30 13:59                             ` jamal
2009-12-01 13:34                               ` jamal
2009-12-03  6:31                                 ` David Miller
2009-12-03 13:53                                   ` jamal
2009-12-03 13:55                                     ` Patrick McHardy
2009-12-03 14:07                                       ` KOVACS Krisztian
2009-12-03 14:29                                         ` jamal
2009-12-13 16:52                                           ` [PATCH] net: restore ip source validation WAS(Re: " jamal
2009-12-13 18:12                                             ` Julian Anastasov
2009-12-13 18:38                                               ` jamal
2009-12-13 19:11                                                 ` jamal
2009-12-13 19:15                                                   ` jamal
2009-12-14  3:10                                                     ` David Miller
2009-12-14 10:19                                                       ` jamal
2009-12-26  1:30                                                         ` David Miller
2009-12-26 15:05                                                           ` jamal
2009-12-26 21:45                                                             ` David Miller
2009-11-30 20:17                           ` David Miller
2009-11-28 21:22             ` David Miller

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=4B1145F1.3090704@trash.net \
    --to=kaber@trash.net \
    --cc=aschultz@warp10.net \
    --cc=hadi@cyberus.ca \
    --cc=hidden@balabit.hu \
    --cc=hidden@sch.bme.hu \
    --cc=netdev@vger.kernel.org \
    --cc=tproxy@lists.balabit.hu \
    /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.