Revision a82c25c366b0963d33ddf699196e6cf57f6d89b1 authored by Florian Westphal on 08 March 2022, 12:52:11 UTC, committed by Florian Westphal on 08 March 2022, 12:52:11 UTC
This reverts commit 878aed8db324bec64f3c3f956e64d5ae7375a5de.

This change breaks existing setups where conntrack is used with
asymmetric paths.

In these cases, the NAT transformation occurs on the syn-ack instead of
the syn:

1. SYN    x:12345 -> y -> 443 // sent by initiator, receiverd by responder
2. SYNACK y:443 -> x:12345 // First packet seen by conntrack, as sent by responder
3. tuple_force_port_remap() gets called, sees:
  'tcp from 443 to port 12345 NAT' -> pick a new source port, inititor receives
4. SYNACK y:$RANDOM -> x:12345   // connection is never established

While its possible to avoid the breakage with NOTRACK rules, a kernel
update should not break working setups.

An alternative to the revert is to augment conntrack to tag
mid-stream connections plus more code in the nat core to skip NAT
for such connections, however, this leads to more interaction/integration
between conntrack and NAT.

Therefore, revert, users will need to add explicit nat rules to avoid
port shadowing.

Link: https://lore.kernel.org/netfilter-devel/20220302105908.GA5852@breakpoint.cc/#R
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2051413
Signed-off-by: Florian Westphal <fw@strlen.de>
1 parent f8e9bd3
History
File Mode Size
Kconfig -rw-r--r-- 1.8 KB
Makefile -rw-r--r-- 556 bytes
addr.c -rw-r--r-- 3.7 KB
addr.h -rw-r--r-- 4.0 KB
bcast.c -rw-r--r-- 22.0 KB
bcast.h -rw-r--r-- 4.6 KB
bearer.c -rw-r--r-- 32.4 KB
bearer.h -rw-r--r-- 9.8 KB
core.c -rw-r--r-- 5.9 KB
core.h -rw-r--r-- 5.8 KB
crypto.c -rw-r--r-- 65.7 KB
crypto.h -rw-r--r-- 7.3 KB
diag.c -rw-r--r-- 3.5 KB
discover.c -rw-r--r-- 12.6 KB
discover.h -rw-r--r-- 2.3 KB
eth_media.c -rw-r--r-- 3.6 KB
group.c -rw-r--r-- 23.8 KB
group.h -rw-r--r-- 3.5 KB
ib_media.c -rw-r--r-- 3.7 KB
link.c -rw-r--r-- 82.7 KB
link.h -rw-r--r-- 6.9 KB
monitor.c -rw-r--r-- 22.2 KB
monitor.h -rw-r--r-- 3.5 KB
msg.c -rw-r--r-- 22.4 KB
msg.h -rw-r--r-- 29.3 KB
name_distr.c -rw-r--r-- 12.0 KB
name_distr.h -rw-r--r-- 3.3 KB
name_table.c -rw-r--r-- 31.8 KB
name_table.h -rw-r--r-- 6.5 KB
net.c -rw-r--r-- 10.2 KB
net.h -rw-r--r-- 2.4 KB
netlink.c -rw-r--r-- 10.1 KB
netlink.h -rw-r--r-- 2.6 KB
netlink_compat.c -rw-r--r-- 34.7 KB
node.c -rw-r--r-- 78.7 KB
node.h -rw-r--r-- 5.8 KB
socket.c -rw-r--r-- 104.7 KB
socket.h -rw-r--r-- 3.6 KB
subscr.c -rw-r--r-- 5.8 KB
subscr.h -rw-r--r-- 4.5 KB
sysctl.c -rw-r--r-- 3.5 KB
topsrv.c -rw-r--r-- 18.3 KB
topsrv.h -rw-r--r-- 2.3 KB
trace.c -rw-r--r-- 7.0 KB
trace.h -rw-r--r-- 13.0 KB
udp_media.c -rw-r--r-- 21.5 KB
udp_media.h -rw-r--r-- 2.5 KB

back to top