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 进行注释?我到处都看到它,但我想知道为什么,而不是其他原因。我对此有点怀疑,因为它不匹配,所以这有点奇怪。
谢谢。
答案1
-m 用于在常规匹配中添加扩展。通常您不能使用它--dports
来指定多个端口。 -m multiport
添加此扩展。如果您只需要在单个端口上匹配(或根本不需要在端口上匹配),则没有必要-m multiport
。iptables 手册页中有一个“匹配扩展”部分,其中描述了可能使用的其他扩展。“state”是一个非常常见的扩展,它将允许您匹配数据包所处的连接状态,如 NEW、ESTABLISHED、RELATED。