diff options
author | Florian Westphal <fw@strlen.de> | 2021-10-25 16:13:59 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-10-26 13:21:09 +0100 |
commit | 8e0538d8ee061699b7c2cf0b193cc186952cbc21 (patch) | |
tree | e2c937855a6792cb8099c83e8aa26e06d797fa5a /tools/lib/subcmd | |
parent | 4900a7691574033baef966ee7246d7bb8a930283 (diff) | |
download | linux-8e0538d8ee061699b7c2cf0b193cc186952cbc21.tar.bz2 |
netfilter: conntrack: skip confirmation and nat hooks in postrouting for vrf
The VRF driver invokes netfilter for output+postrouting hooks so that users
can create rules that check for 'oif $vrf' rather than lower device name.
Afterwards, ip stack calls those hooks again.
This is a problem when conntrack is used with IP masquerading.
masquerading has an internal check that re-validates the output
interface to account for route changes.
This check will trigger in the vrf case.
If the -j MASQUERADE rule matched on the first iteration, then round 2
finds state->out->ifindex != nat->masq_index: the latter is the vrf
index, but out->ifindex is the lower device.
The packet gets dropped and the conntrack entry is invalidated.
This change makes conntrack postrouting skip the nat hooks.
Also skip confirmation. This allows the second round
(postrouting invocation from ipv4/ipv6) to create nat bindings.
This also prevents the second round from seeing packets that had their
source address changed by the nat hook.
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'tools/lib/subcmd')
0 files changed, 0 insertions, 0 deletions