![Iptables 规则中 -m, --match 的用途是什么?](https://linux22.com/image/76970/Iptables%20%E8%A7%84%E5%88%99%E4%B8%AD%20-m%2C%20--match%20%E7%9A%84%E7%94%A8%E9%80%94%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
许多 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
-m
or选项--match
用于启用一个或多个扩展数据包匹配模块使用给定的名称。以模块为例connbytes
。这可用于创建匹配连接传输了多少字节的规则。
的手册页对此iptables
给出了很好的描述:
iptables 可以使用扩展数据包匹配模块。它们以两种方式加载:隐式加载,当指定 -p 或 --protocol 时,或者使用 -m 或 --match 选项,后跟匹配的模块名称;之后,根据特定模块,各种额外的命令行选项变得可用。您可以在一行中指定多个扩展匹配模块,并且可以在指定模块后使用 -h 或 --help 选项来接收特定于该模块的帮助。
我强烈建议您阅读iptables-extensions
手册页,其中记录了 iptables 标准发行版中包含的模块:
$ man iptables-extensions