iptables 规则遍历顺序

iptables 规则遍历顺序

以下是我的 iptables 的部分输出:

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination         
   22866  3280283 ufw-before-logging-output  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
   22866  3280283 ufw-before-output  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    3307   353252 ufw-after-output  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    3307   353252 ufw-after-logging-output  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    3307   353252 ufw-reject-output  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    3307   353252 ufw-track-output  all  --  *      *       0.0.0.0/0            0.0.0.0/0          

Chain ufw-before-output (1 references)
    pkts      bytes target     prot opt in     out     source               destination         
    2214   368749 ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0           
    7342  1051009 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
    1884   204643 ufw-user-output  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain ufw-user-output (1 references)
    pkts      bytes target     prot opt in     out     source               destination         
       2      120 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22

根据我的理解,规则是从上到下匹配的。当数据包与终止操作(例如 ACCEPT)匹配时,它将停止。那么,为什么 ssh 数据包可以到达 Chain ufw-before-output 中的规则 3 并被丢弃?为什么它不被 Chain ufw-before-output 中的规则 1 接受?

答案1

链 ufw-before-output 中的规则 1 具有仅适用于本地接口 (lo) 的附加条件。命中 ufw-user-output 链 DROP 规则的两个数据包不会发往本地接口。它们也可能是新的 tcp 连接 syn 数据包,因此不满足 RELATED,ESTABLISHED 规则。

相关内容