IPtables:何时在规则中使用-m?

match = -m matchname [per-match-options]
但它让我困惑。 这是一个例子:

iptables -A INPUT -p tcp -m multiport --dports 23,79 --tcp-flags ALL SYN -m recent --update --seconds 180 -m comment --comment "SYN" -j DROP 

有人可以向我解释背后的理论,为什么我不必在-tcp-flags(也许我应该)之前使用-m,就像这样:

 iptables -A INPUT -p tcp -m multiport --dports 23,79 -m --tcp-flags ALL SYN -m recent --update --seconds 180 -m comment --comment "SYN" -j DROP 

如果是这样写的话,对我来说更有意义:

 iptables -A INPUT -p tcp -m tcp --tcp-flags ALL SYN -m multiport --dports 23,79 -m recent --update --seconds 180 -m comment --comment "SYN" -j DROP 

为什么我应该使用-m作为评论? 我到处都能看到,但我想知道为什么而不是别的。 我有点疑问,因为这不匹配,所以这有点奇怪。
谢谢。

-m用于向常规匹配添加扩展名。 通常您不能使用--dports指定多个端口。 -m multiport增加了这个扩展。 如果你只需要匹配一个端口(或者根本不匹配一个端口),那么没有理由使用-m multiport 。 iptables的manpage中有一个“MATCH EXTENSIONS”部分,它描述了可能使用的其他扩展。 “状态”是一个非常普遍的情况,它可以让你匹配数据包所在的连接状态,比如NEW,ESTABLISHED,RELATED。