]> git.baikalelectronics.ru Git - kernel.git/commit
netfilter: conntrack: connection timeout after re-register
authorFrancesco Ruggeri <fruggeri@arista.com>
Wed, 7 Oct 2020 19:32:52 +0000 (12:32 -0700)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 20 Oct 2020 11:54:53 +0000 (13:54 +0200)
commit97fdaafadf2a4d5ee41aa2e251d01011f6adb48d
treead57d912022c7ec6be42bc0bed4fb52d1e3bdeac
parent9fe7d88d50dc99afe9ea0caba7cb7ed90930de81
netfilter: conntrack: connection timeout after re-register

If the first packet conntrack sees after a re-register is an outgoing
keepalive packet with no data (SEG.SEQ = SND.NXT-1), td_end is set to
SND.NXT-1.
When the peer correctly acknowledges SND.NXT, tcp_in_window fails
check III (Upper bound for valid (s)ack: sack <= receiver.td_end) and
returns false, which cascades into nf_conntrack_in setting
skb->_nfct = 0 and in later conntrack iptables rules not matching.
In cases where iptables are dropping packets that do not match
conntrack rules this can result in idle tcp connections to time out.

v2: adjust td_end when getting the reply rather than when sending out
    the keepalive packet.

Fixes: 9bd81bd194d2 ("netfilter: conntrack: reset tcp maxwin on re-register")
Signed-off-by: Francesco Ruggeri <fruggeri@arista.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nf_conntrack_proto_tcp.c