iptables命令-m常用的参数
·
-m 是 iptables 命令中用于**加载扩展模块(match extensions)**的参数。这些模块提供了额外的匹配条件(matching criteria),可以更精细地控制网络流量的过滤规则。通过 -m 参数加载模块后,可以使用该模块支持的特定选项来定义规则。
核心作用
- 扩展功能:允许基于协议、状态、IP范围、端口范围等更复杂的条件匹配流量。
- 模块化设计:不同模块提供不同的匹配能力(如状态跟踪、多端口匹配、字符串匹配等)。
常见用法示例
以下是一些常用的模块及其作用:
1. -m state 或 -m conntrack(连接状态跟踪)
用于匹配连接的状态(如已建立的连接、新连接等):
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
--ctstate支持的常见状态:NEW:新发起的连接。ESTABLISHED:已建立的连接。RELATED:与已有连接相关的连接(如 FTP 数据传输)。
2. -m tcp / -m udp(协议扩展)
提供更精细的 TCP/UDP 协议选项:
iptables -A INPUT -p tcp -m tcp --dport 80:100 -j ACCEPT # 允许 TCP 80-100 端口
--sport:源端口。--dport:目标端口。--tcp-flags:匹配 TCP 标志位(如SYN,ACK)。
3. -m multiport(多端口匹配)
允许一次性匹配多个离散端口:
iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT
4. -m limit(速率限制)
限制规则的匹配速率(如防止日志被刷屏):
iptables -A INPUT -p icmp -m limit --limit 3/sec -j ACCEPT
5. -m iprange(IP 范围匹配)
匹配源或目标 IP 地址范围:
iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.200 -j DROP
6. -m mac(MAC 地址匹配)
基于网络接口的 MAC 地址过滤:
iptables -A INPUT -m mac --mac-source 00:11:22:33:44:55 -j DROP
7. -m string(字符串匹配)
匹配数据包中的特定字符串(如 HTTP 请求中的关键字):
iptables -A FORWARD -m string --algo bm --string "blockme" -j DROP
8. -m recent(动态列表匹配)
跟踪最近连接的 IP(常用于防暴力破解):
iptables -A INPUT -p tcp --dport 22 -m recent --name ssh --set
iptables -A INPUT -p tcp --dport 22 -m recent --name ssh --update --seconds 60 --hitcount 3 -j DROP
注意事项
- 模块依赖:某些模块需要内核支持(如
nf_conntrack模块)。 - 参数顺序:
-m 模块名必须放在使用该模块参数的前面。 - 规则优化:尽量将高频匹配规则放在前面,减少不必要的模块加载。
总结
-m是扩展iptables功能的核心参数,通过加载模块实现复杂规则。- 常用模块:
state(状态)、multiport(多端口)、limit(限速)、iprange(IP范围)等。 - 查看支持的模块:
man iptables-extensions或iptables -m <模块名> --help。
更多推荐
所有评论(0)