-miptables 命令中用于**加载扩展模块(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

注意事项

  1. 模块依赖:某些模块需要内核支持(如 nf_conntrack 模块)。
  2. 参数顺序-m 模块名 必须放在使用该模块参数的前面。
  3. 规则优化:尽量将高频匹配规则放在前面,减少不必要的模块加载。

总结

  • -m 是扩展 iptables 功能的核心参数,通过加载模块实现复杂规则。
  • 常用模块:state(状态)、multiport(多端口)、limit(限速)、iprange(IP范围)等。
  • 查看支持的模块:man iptables-extensionsiptables -m <模块名> --help
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐