iptables 中的 OUTPUT 链规则

iptables 中的 OUTPUT 链规则

netfilter似乎允许来自我的INPUT链的被拒绝的流量通过我的OUTPUT链。以下是INPUT应用于相关数据包的链中的规则:

 LOG         all  --  *  *   0.0.0.0/0  0.0.0.0/0    LOG flags 0 level 6 prefix "ICATCH:"
 REJECT-PKT  all  --  *  *   0.0.0.0/0  0.0.0.0/0    

用户自定义REJECT-PKT链及其相关规则:

 REJECT    tcp  --  *  *  0.0.0.0/0    0.0.0.0/0    tcp reject-with tcp-reset

这是记录的结果:

May 15 06:41:51 li51-144 kernel: ICATCH:IN=eth0 OUT= MAC=f2:3c:91:1f:61:44:84:78:ac:0d:97:c1:08:00 SRC=188.138.135.9 DST=<my IP> LEN=40 TOS=0x00 PREC=0x00 TTL=46 ID=46841 PROTO=TCP SPT=8838 DPT=23 WINDOW=22014 RES=0x00 SYN URGP=0
May 15 06:41:51 li51-144 kernel: OCATCH:IN= OUT=eth0 SRC=<my IP> DST=188.138.135.9 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=23 DPT=8838 WINDOW=0 RES=0x00 ACK RST URGP=0

第二行由表中的以下(倒数第二)规则生成OUTPUT

LOG        all  --  0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 6 prefix "OCATCH:"

我的印象是被拒绝的数据包以某种方式被内核标记,并且带有RSTiptables规则产生的标志的 TCP 流量未被防火墙处理。

我误解了什么?

答案1

就像@Aaron 所说,这是正常的。

当传入数据包达到REJECT 规则时,它将由 netfilter 处理,并用RST数据包和消息回复发送者。

但是,如果您将其设置为DROP相反,则源将不会收到任何消息。

检查此链接: DROP 和 REJECT 之间的区别

值得运行tcpdumpwireshark捕获输出并查看集线器下发生了什么。

相关内容