我设置了一些iptables
规则,以便记录并丢弃无效 ( --state INVALID
) 的数据包。阅读日志如何了解数据包被视为无效的原因?例如,以下内容:
11 月 29 日 22:59:13 htpc 路由器内核:[6550193.790402] ::IPT::DROP:: IN=ppp0 OUT= MAC= SRC=31.13.72.7 DST=136.169.151.82 LEN=40 TOS=0x00 PREC=0x00 TTL =242 ID=5104 DF PROTO=TCP SPT=80 DPT=61597 WINDOW=0 RES=0x00 ACK RST URGP=0
答案1
使用状态数据包检查时,数据包可以处于各种状态。
- 新的:数据包不属于任何已知流或套接字,并且 TCP 标志的 SYN 位已打开。
- 已确立的:数据包与跟踪的流或套接字匹配
CONNTRACK
,并且具有任何 TCP 标志。初始 TCP 握手完成后,SYN 位必须关闭,数据包才能处于已建立状态。 - 有关的:该数据包与任何已知的流或套接字都不匹配,但该数据包是预期的,因为存在一个现有的套接字来预测它(例如,当端口 21 上存在现有 FTP 会话时端口 20 上的数据,或者 UDP 数据TCP 端口 5060 上的现有 SIP 连接)。这需要关联的 ALG。
- 无效的:如果前面的状态均不适用,则数据包处于状态
INVALID
。这可能是由各种类型的隐形网络探测引起的,或者可能意味着您的条目已用完CONNTRACK
(您还应该在日志中看到这些条目)。或者它可能完全是良性的。
在您的情况下,您引用的数据包显示 TCP 标志ACK
和RST
,并且源端口是80
。这意味着 Web 服务器31.13.72.7
(恰好是 Facebook)向您发送了一个重置数据包。如果没有看到之前的数据包(如果有的话),就完全不可能说出原因。但很可能它会向您发送重置,原因与您的计算机认为它无效的原因相同。