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

Kri*_*ris 3 iptables

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
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释它背后的理论,为什么我不必在 --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    
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

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

ste*_*tew 6

-m 用于向常规匹配添加扩展名。通常您不能用于--dports指定多个端口。 -m multiport添加此扩展名。如果您只需要匹配单个端口(或根本不匹配某个端口),则没有理由使用-m multiport. iptables 联机帮助页的“匹配扩展”部分描述了可能使用的其他扩展。“状态”是一个非常常见的状态,它可以让您匹配数据包所在的连接状态,例如 NEW、ESTABLISHED、RELATED。