Iptables 规则中 -m, --match 的用途是什么?

Iptables 规则中 -m, --match 的用途是什么?

许多 Iptables 规则都包含此-m--match选项,例如

-I INPUT -p tcp -m state --state NEW -m limit --limit 30/minute --limit-burst 5 -j ACCEPT
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p icmp -m conntrack --ctstate NEW -j ICMP

这是“特殊”选项-m还是--match“普通”选项的先驱?
例如,用这个规则

-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP

这个术语是否-m tcp对 Iptables 说:接下来的下一个选项将用于该tcp模块- 那么该--tcp-flags FIN,SYN,RST,ACK SYN术语将在该上下文中解释?
换句话说,-m tcp如果该选项是在 Iptables 规则中自行指定的,那么该选项是否就没有意义?

答案1

-mor选项--match用于启用一个或多个扩展数据包匹配模块使用给定的名称。以模块为例connbytes。这可用于创建匹配连接传输了多少字节的规则。

的手册页对此iptables给出了很好的描述:

iptables 可以使用扩展数据包匹配模块。它们以两种方式加载:隐式加载,当指定 -p 或 --protocol 时,或者使用 -m 或 --match 选项,后跟匹配的模块名称;之后,根据特定模块,各种额外的命令行选项变得可用。您可以在一行中指定多个扩展匹配模块,并且可以在指定模块后使用 -h 或 --help 选项来接收特定于该模块的帮助。

我强烈建议您阅读iptables-extensions手册页,其中记录了 iptables 标准发行版中包含的模块:

$ man iptables-extensions

相关内容