Re: order of netfilter hooks and check for martian source

Michael Tokarev <[email protected]> Sat, 21 Jun 2025 17:54:01 +0300
Newsgroups gmane.comp.security.firewalls.netfilter.general
Message-ID <[email protected]>
On 21.06.2025 17:42, Jozsef Kadlecsik wrote:
...

>  From netfilter point of view routing is a completely independent, "black
> box" system. We can operate before and after routing but we cannot jump to
> "hooks" in routing because there isn't any there.

This kinda defeats the purpose, I think, as demonstrated by this
situation.

Original issue was that checking for martians is done after netfilter
modified the packet, which is rather pointless, and it is a fundamental
thing: it's the original addresses which should be checked for martians,
not the altered ones.  Can this ever be done, -- first the rp filter is
applied, next the NAT table is consulted, and next regular routing is
done to the resulting packet?

Current, more serious issue - wrong routing of replies to DNATed packets
- is actually the same, - the de-NATing of replies should be done before
the routing, while it is done after.

> However, routing decisions can be affected by marking packets. So I'd mark
> packets before routing and use routing tables according to the mark value.

It is probably possible to do, I think, but it becomes too complex to
be practical.  Why can't we fix the order instead and make it to work
in a natural, expected way?

Thanks,

/mjt