From: Florian Westphal <fw@strlen.de>
To: Jerome Barotin <jbn@s4e.fr>
Cc: netfilter@vger.kernel.org
Subject: Re: How to understand causes of invalid state for an OUPUT SYNACK packet
Date: Fri, 21 Jan 2022 13:40:59 +0100 [thread overview]
Message-ID: <20220121124059.GA14018@breakpoint.cc> (raw)
In-Reply-To: <20220121122332.1501d9ba@glazard>
Jerome Barotin <jbn@s4e.fr> wrote:
> I've got a specific device (industrial computer) where its
> TCP connection are always blocked by netfilter when it tries to
> connect to my server.
>
> Exactly the SYN packet is forwarded to my local process, but, the
> SYN-ACK answer is always tagged as invalid by the conntrack
> module,
Its not, the message is misleading.
> I noticed this behaviour in the following line in kern.log :
>
> Jan 14 11:26:15 myhostname kernel: [260283.271861] nf_ct_proto_6:
> invalid packet ignored in state SYN_RECV IN= OUT= SRC=10.1.1.4
> DST=10.1.1.3 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=21
> DPT=64004 SEQ=1624381780 ACK=2190670817 WINDOW=64240 RES=0x00 ACK SYN
> URGP=0 OPT (020405B40101040201030307)
Maybe we should just axe this message. The packet is *ignored*, not
marked as invalid. Such packet will NOT trigger -m conntrack --ctstate
INVALID. The wording was slightly changed in 5.12 kernel, where this is
now:
nf_ct_proto_6: packet (index 1) in dir 1 ignored, state SYN_RECV IN=...
> The corresponding pcap file can be found here :
> https://filebin.net/yazmmekhrdiu4dh8/capture_not_work_ano.pcap
Thanks, lets see (trimmed line length):
.3.64004 > 10.1.1.4.21: Flags [S], seq 2190670816, win 8192, options [mss 1330,nop,wscale 8,nop,nop,sackOK], length 0
This packets gets us to SYN_SENT state:
tcp 6 116 SYN_SENT src=10.1.1.3 dst=10.1.1.4 sport=64004 dport=21 [UNREPLIED] src=10.1.1.4 dst=10.1.1.3 sport=21 dport=64004 mark=0 use=1
... packet would match --ctstate NEW.
.4.21 > 10.1.1.3.64004: Flags [S.], seq 1624381780, ack 2190670817, win 64240, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
This packet gets us to SYN_RECV state.
... packet would match --ctstate ESTABLISHED.
.4.21 > 10.1.1.3.64004: Flags [S.], seq 1624381780, ack 2190670817, win 64240, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
This packet produces the 'ignored' message quoted above, its ignored
because we already saw such packet before, so packet matches ESTABLISHED
state.
.4.21 > 10.1.1.3.64004: Flags [S.], seq 1624381780, ack 2190670817, win 64240, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
This repeats the message, no other side effects.
.3.64004 > 10.1.1.4.21: Flags [S], seq 2190670816, win 65535, options [mss 1330,nop,nop,sackOK], length 0
Similar message, this is for 'index 0'
4.21 > 10.1.1.3.64004: Flags [S.], seq 1624381780, ack 2190670817, win 64240, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
> Also, I do not understand how this connection could be in SYN_RECV
> conntrack state. This state means that SYN-ACK packet has already been
> received and I'm sure that no such packet has already been submitted.
Where was that dump taken? Its what I used to tcpreplay into a vm.
> Do I miss something ? Anybody has got idea to help me understand (and
> fix) this case ?
Is the conntrack machine forwarding or an endpoint?
If forwarding, can you provide pcaps from the inbound
and outbound interfaces?
You could also -j LOG packets in state INVALID to pinpoint which
packet really does get marked as INVALID, but afaict its not a
packet contained in the provided pcap.
next prev parent reply other threads:[~2022-01-21 12:40 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-21 11:23 How to understand causes of invalid state for an OUPUT SYNACK packet Jerome Barotin
2022-01-21 12:40 ` Florian Westphal [this message]
2022-01-21 16:58 ` Jerome Barotin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220121124059.GA14018@breakpoint.cc \
--to=fw@strlen.de \
--cc=jbn@s4e.fr \
--cc=netfilter@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox