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
ipset
ipvs
Kconfig -rw-r--r-- 53.2 KB
Makefile -rw-r--r-- 9.0 KB
core.c -rw-r--r-- 18.3 KB
nf_conncount.c -rw-r--r-- 15.3 KB
nf_conntrack_acct.c -rw-r--r-- 1.1 KB
nf_conntrack_amanda.c -rw-r--r-- 5.9 KB
nf_conntrack_broadcast.c -rw-r--r-- 1.9 KB
nf_conntrack_core.c -rw-r--r-- 73.2 KB
nf_conntrack_ecache.c -rw-r--r-- 8.2 KB
nf_conntrack_expect.c -rw-r--r-- 19.7 KB
nf_conntrack_extend.c -rw-r--r-- 2.8 KB
nf_conntrack_ftp.c -rw-r--r-- 16.2 KB
nf_conntrack_h323_asn1.c -rw-r--r-- 20.1 KB
nf_conntrack_h323_main.c -rw-r--r-- 50.9 KB
nf_conntrack_h323_types.c -rw-r--r-- 87.8 KB
nf_conntrack_helper.c -rw-r--r-- 15.1 KB
nf_conntrack_irc.c -rw-r--r-- 7.6 KB
nf_conntrack_labels.c -rw-r--r-- 2.1 KB
nf_conntrack_netbios_ns.c -rw-r--r-- 2.0 KB
nf_conntrack_netlink.c -rw-r--r-- 94.3 KB
nf_conntrack_pptp.c -rw-r--r-- 18.9 KB
nf_conntrack_proto.c -rw-r--r-- 17.1 KB
nf_conntrack_proto_dccp.c -rw-r--r-- 22.7 KB
nf_conntrack_proto_generic.c -rw-r--r-- 1.9 KB
nf_conntrack_proto_gre.c -rw-r--r-- 9.0 KB
nf_conntrack_proto_icmp.c -rw-r--r-- 10.7 KB
nf_conntrack_proto_icmpv6.c -rw-r--r-- 8.1 KB
nf_conntrack_proto_sctp.c -rw-r--r-- 21.7 KB
nf_conntrack_proto_tcp.c -rw-r--r-- 46.5 KB
nf_conntrack_proto_udp.c -rw-r--r-- 8.7 KB
nf_conntrack_sane.c -rw-r--r-- 5.5 KB
nf_conntrack_seqadj.c -rw-r--r-- 6.5 KB
nf_conntrack_sip.c -rw-r--r-- 46.2 KB
nf_conntrack_snmp.c -rw-r--r-- 2.0 KB
nf_conntrack_standalone.c -rw-r--r-- 32.6 KB
nf_conntrack_tftp.c -rw-r--r-- 3.8 KB
nf_conntrack_timeout.c -rw-r--r-- 4.0 KB
nf_conntrack_timestamp.c -rw-r--r-- 1.1 KB
nf_dup_netdev.c -rw-r--r-- 1.8 KB
nf_flow_table_core.c -rw-r--r-- 16.9 KB
nf_flow_table_inet.c -rw-r--r-- 2.6 KB
nf_flow_table_ip.c -rw-r--r-- 16.4 KB
nf_flow_table_offload.c -rw-r--r-- 32.4 KB
nf_hooks_lwtunnel.c -rw-r--r-- 1.2 KB
nf_internals.h -rw-r--r-- 1.3 KB
nf_log.c -rw-r--r-- 12.4 KB
nf_log_syslog.c -rw-r--r-- 27.3 KB
nf_nat_amanda.c -rw-r--r-- 2.5 KB
nf_nat_core.c -rw-r--r-- 31.3 KB
nf_nat_ftp.c -rw-r--r-- 4.0 KB
nf_nat_helper.c -rw-r--r-- 5.8 KB
nf_nat_irc.c -rw-r--r-- 3.4 KB
nf_nat_masquerade.c -rw-r--r-- 9.0 KB
nf_nat_proto.c -rw-r--r-- 27.9 KB
nf_nat_redirect.c -rw-r--r-- 3.1 KB
nf_nat_sip.c -rw-r--r-- 20.8 KB
nf_nat_tftp.c -rw-r--r-- 1.4 KB
nf_queue.c -rw-r--r-- 7.8 KB
nf_sockopt.c -rw-r--r-- 2.8 KB
nf_synproxy_core.c -rw-r--r-- 30.5 KB
nf_tables_api.c -rw-r--r-- 240.1 KB
nf_tables_core.c -rw-r--r-- 8.6 KB
nf_tables_offload.c -rw-r--r-- 16.3 KB
nf_tables_trace.c -rw-r--r-- 7.3 KB
nfnetlink.c -rw-r--r-- 17.6 KB
nfnetlink_acct.c -rw-r--r-- 13.2 KB
nfnetlink_cthelper.c -rw-r--r-- 19.0 KB
nfnetlink_cttimeout.c -rw-r--r-- 15.5 KB
nfnetlink_hook.c -rw-r--r-- 9.2 KB
nfnetlink_log.c -rw-r--r-- 29.4 KB
nfnetlink_osf.c -rw-r--r-- 9.7 KB
nfnetlink_queue.c -rw-r--r-- 38.3 KB
nft_bitwise.c -rw-r--r-- 12.7 KB
nft_byteorder.c -rw-r--r-- 4.6 KB
nft_chain_filter.c -rw-r--r-- 10.6 KB
nft_chain_nat.c -rw-r--r-- 3.6 KB
nft_chain_route.c -rw-r--r-- 4.0 KB
nft_cmp.c -rw-r--r-- 7.5 KB
nft_compat.c -rw-r--r-- 22.1 KB
nft_connlimit.c -rw-r--r-- 7.4 KB
nft_counter.c -rw-r--r-- 7.6 KB
nft_ct.c -rw-r--r-- 31.6 KB
nft_dup_netdev.c -rw-r--r-- 2.9 KB
nft_dynset.c -rw-r--r-- 10.4 KB
nft_exthdr.c -rw-r--r-- 14.1 KB
nft_fib.c -rw-r--r-- 3.9 KB
nft_fib_inet.c -rw-r--r-- 1.9 KB
nft_fib_netdev.c -rw-r--r-- 2.2 KB
nft_flow_offload.c -rw-r--r-- 12.3 KB
nft_fwd_netdev.c -rw-r--r-- 6.5 KB
nft_hash.c -rw-r--r-- 6.1 KB
nft_immediate.c -rw-r--r-- 5.7 KB
nft_last.c -rw-r--r-- 3.0 KB
nft_limit.c -rw-r--r-- 11.8 KB
nft_log.c -rw-r--r-- 7.5 KB
nft_lookup.c -rw-r--r-- 6.8 KB
nft_masq.c -rw-r--r-- 7.6 KB
nft_meta.c -rw-r--r-- 20.9 KB
nft_nat.c -rw-r--r-- 9.9 KB
nft_numgen.c -rw-r--r-- 5.7 KB
nft_objref.c -rw-r--r-- 6.4 KB
nft_osf.c -rw-r--r-- 3.6 KB
nft_payload.c -rw-r--r-- 22.9 KB
nft_queue.c -rw-r--r-- 5.2 KB
nft_quota.c -rw-r--r-- 7.3 KB
nft_range.c -rw-r--r-- 3.5 KB
nft_redir.c -rw-r--r-- 7.3 KB
nft_reject.c -rw-r--r-- 3.3 KB
nft_reject_inet.c -rw-r--r-- 2.9 KB
nft_reject_netdev.c -rw-r--r-- 4.9 KB
nft_rt.c -rw-r--r-- 4.4 KB
nft_set_bitmap.c -rw-r--r-- 8.6 KB
nft_set_hash.c -rw-r--r-- 18.1 KB
nft_set_pipapo.c -rw-r--r-- 63.4 KB
nft_set_pipapo.h -rw-r--r-- 8.9 KB
nft_set_pipapo_avx2.c -rw-r--r-- 39.4 KB
nft_set_pipapo_avx2.h -rw-r--r-- 428 bytes
nft_set_rbtree.c -rw-r--r-- 17.3 KB
nft_socket.c -rw-r--r-- 5.1 KB
nft_synproxy.c -rw-r--r-- 9.9 KB
nft_tproxy.c -rw-r--r-- 8.8 KB
nft_tunnel.c -rw-r--r-- 19.0 KB
nft_xfrm.c -rw-r--r-- 6.5 KB
utils.c -rw-r--r-- 5.3 KB
x_tables.c -rw-r--r-- 49.7 KB
xt_AUDIT.c -rw-r--r-- 3.5 KB
xt_CHECKSUM.c -rw-r--r-- 2.2 KB
xt_CLASSIFY.c -rw-r--r-- 1.8 KB
xt_CONNSECMARK.c -rw-r--r-- 3.5 KB
xt_CT.c -rw-r--r-- 8.8 KB
xt_DSCP.c -rw-r--r-- 3.8 KB
xt_HL.c -rw-r--r-- 3.4 KB
xt_HMARK.c -rw-r--r-- 8.7 KB
xt_IDLETIMER.c -rw-r--r-- 13.0 KB
xt_LED.c -rw-r--r-- 4.9 KB
xt_LOG.c -rw-r--r-- 2.9 KB
xt_MASQUERADE.c -rw-r--r-- 3.2 KB
xt_NETMAP.c -rw-r--r-- 4.8 KB
xt_NFLOG.c -rw-r--r-- 2.2 KB
xt_NFQUEUE.c -rw-r--r-- 3.7 KB
xt_RATEEST.c -rw-r--r-- 5.6 KB
xt_REDIRECT.c -rw-r--r-- 3.1 KB
xt_SECMARK.c -rw-r--r-- 4.2 KB
xt_TCPMSS.c -rw-r--r-- 8.7 KB
xt_TCPOPTSTRIP.c -rw-r--r-- 3.8 KB
xt_TEE.c -rw-r--r-- 5.4 KB
xt_TPROXY.c -rw-r--r-- 8.2 KB
xt_TRACE.c -rw-r--r-- 1.2 KB
xt_addrtype.c -rw-r--r-- 6.2 KB
xt_bpf.c -rw-r--r-- 3.6 KB
xt_cgroup.c -rw-r--r-- 5.5 KB
xt_cluster.c -rw-r--r-- 4.9 KB
xt_comment.c -rw-r--r-- 1.1 KB
xt_connbytes.c -rw-r--r-- 4.5 KB
xt_connlabel.c -rw-r--r-- 2.5 KB
xt_connlimit.c -rw-r--r-- 3.7 KB
xt_connmark.c -rw-r--r-- 5.1 KB
xt_conntrack.c -rw-r--r-- 9.5 KB
xt_cpu.c -rw-r--r-- 1.4 KB
xt_dccp.c -rw-r--r-- 4.3 KB
xt_devgroup.c -rw-r--r-- 2.1 KB
xt_dscp.c -rw-r--r-- 2.6 KB
xt_ecn.c -rw-r--r-- 4.3 KB
xt_esp.c -rw-r--r-- 2.5 KB
xt_hashlimit.c -rw-r--r-- 34.1 KB
xt_helper.c -rw-r--r-- 2.3 KB
xt_hl.c -rw-r--r-- 2.1 KB
xt_ipcomp.c -rw-r--r-- 2.7 KB
xt_iprange.c -rw-r--r-- 3.6 KB
xt_ipvs.c -rw-r--r-- 4.3 KB
xt_l2tp.c -rw-r--r-- 9.0 KB
xt_length.c -rw-r--r-- 1.7 KB
xt_limit.c -rw-r--r-- 6.1 KB
xt_mac.c -rw-r--r-- 1.6 KB
xt_mark.c -rw-r--r-- 1.9 KB
xt_multiport.c -rw-r--r-- 4.5 KB
xt_nat.c -rw-r--r-- 6.5 KB
xt_nfacct.c -rw-r--r-- 2.4 KB
xt_osf.c -rw-r--r-- 1.7 KB
xt_owner.c -rw-r--r-- 3.9 KB
xt_physdev.c -rw-r--r-- 3.9 KB
xt_pkttype.c -rw-r--r-- 1.5 KB
xt_policy.c -rw-r--r-- 4.7 KB
xt_quota.c -rw-r--r-- 2.0 KB
xt_rateest.c -rw-r--r-- 3.6 KB
xt_realm.c -rw-r--r-- 1.3 KB
xt_recent.c -rw-r--r-- 19.2 KB
xt_repldata.h -rw-r--r-- 1.6 KB
xt_sctp.c -rw-r--r-- 5.0 KB
xt_set.c -rw-r--r-- 19.6 KB
xt_socket.c -rw-r--r-- 8.4 KB
xt_state.c -rw-r--r-- 1.8 KB
xt_statistic.c -rw-r--r-- 2.4 KB
xt_string.c -rw-r--r-- 2.5 KB
xt_tcpmss.c -rw-r--r-- 2.4 KB
xt_tcpudp.c -rw-r--r-- 5.6 KB
xt_time.c -rw-r--r-- 8.5 KB
xt_u32.c -rw-r--r-- 2.7 KB

back to top