跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

Ansible iptables 模块参数详解与实战示例

Ansible iptables 模块用于管理 Linux 内核 IP 包过滤规则。文章详细列举了 action、chain、source、destination 等关键参数的含义及用法,并通过四个实战案例演示了如何添加 DROP 规则、配置端口转发、放行 ESTABLISHED 状态连接以及设置访问限速。内容涵盖模块基础概念、参数列表及具体命令执行结果分析,适用于系统管理员进行网络策略自动化配置。

人间过客发布于 2025/1/19更新于 2026/9/962 浏览
Ansible iptables 模块参数详解与实战示例

Ansible iptables 模块说明

Iptables 用于设置、维护和检查 Linux 内核中的 IP 包过滤规则的表。此模块不处理保存和/或加载规则,而是仅处理存在于内存中的当前规则。这与该模块在内部使用的'iptables'和'ip6tables'命令的行为相同。

参数说明

参数是否必需默认值选项说明
actionnoappendappend, insert规则是应附加在底部还是插入在顶部。如果规则已经存在,则不会修改链。
chainno-INPUT, FORWARD, OUTPUT, PREROUTING, POSTROUTING, SECMARK, CONNSECMARK链操作。此选项可以是用户定义链的名称或任何内置链。
commentno--指定将添加到规则的注释。
ctstateno-INVALID, NEW, ESTABLISHED, RELATED, UNTRACKED, SNAT, DNATconntrack 模块中要匹配的连接状态的列表。
destinationno--目标规范。地址可以是网络名称、主机名、网络 IP 地址(带有/ mask)或纯 IP 地址。
destination_portno--目标端口或端口范围规范。这可以是服务名称或端口号。
flushno--刷新所有规则的指定表和链。如果未指定链,则清除整个表。
fragmentno--这意味着规则仅指分段分组的第二和另外的片段。
gotono-
-
指定处理应在用户指定的链中继续。
icmp_typeno--允许指定 ICMP 类型,其可以是数字 ICMP 类型、类型/代码对或 ICMP 类型名称之一。
in_interfaceno--接收数据包的接口名称(仅适用于进入 INPUT, FORWARD 和 PREROUTING 链的数据包)。
ip_versionnoipv4ipv4, ipv6该规则应适用于哪个版本的 IP 协议。
jumpno--指定规则的目标;即如果分组匹配它要做什么。
limitno--指定每秒允许的最大匹配平均数。
limit_burstno--指定在上述限制开始之前的最大突发数。
matchno--指定要使用的匹配,即测试特定属性的扩展模块。
out_interfaceno--将要发送数据包的接口的名称。
policyno-ACCEPT, DROP, QUEUE, RETURN将链的策略设置为给定目标。
protocolno-tcp, udp, udplite, icmp, esp, ah, sctp, all要检查的规则或数据包的协议。
reject_withno--指定拒绝时返回的错误包类型。
set_counters---使管理员能够初始化规则的数据包和字节计数器。
set_dscp_markno--允许指定要添加到数据包的 DSCP 标记。
set_dscp_mark_classno--允许指定将被转换为相应的 DSCP 标记的预定义 DiffServ 类。
sourceno--源规范。地址可以是网络名称、主机名、网络 IP 地址(带有/ mask)或纯 IP 地址。
source_portno--源端口或端口范围规范。
statenopresentpresent, absent规则是否缺失或存在。
tablenofilterfilter, nat, mangle, raw, security此选项指定命令应操作的数据包匹配表。
to_destinationno--指定了与 DNAT 一起使用的目标地址。
to_portsno--指定要使用的目标端口或端口范围。
to_sourceno--指定了与 SNAT 一起使用的源地址。
uid_ownerno--指定在所有者规则匹配时使用的 UID 或用户名。

使用示例

1. 添加一条规则,来自 10.1.1.2 的请求都 DROP 掉

ansible dbserver -m iptables -a "chain=INPUT source=10.1.1.2 jump=DROP"

执行结果:

{
    "chain": "INPUT",
    "changed": true,
    "failed": false,
    "flush": false,
    "ip_version": "ipv4",
    "rule": "-s 10.1.1.2 -j DROP",
    "state": "present",
    "table": "filter"
}

查看结果:

iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  10.1.1.2             0.0.0.0/0

2. 添加一条规则,通过 ens33 进入的请求本地 80 端口转发到 8600

ansible dbserver -m iptables -a "table=nat chain=PREROUTING in_interface=ens33 protocol=tcp match=tcp destination_port=80 jump=REDIRECT to_ports=8600"

执行结果:

{
    "chain": "PREROUTING",
    "changed": true,
    "failed": false,
    "flush": false,
    "ip_version": "ipv4",
    "rule": "-p tcp -m tcp -j REDIRECT -i ens33 --destination-port 80 --to-ports 8600",
    "state": "present",
    "table": "nat"
}

查看结果:

iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
REDIRECT   tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 redir ports 8600

3. 添加一条规则,所以状态为 RELATED,ESTABLISHED 放行

ansible dbserver -m iptables -a "chain=INPUT ctstate='ESTABLISHED,RELATED' jump=ACCEPT"

执行结果:

{
    "chain": "INPUT",
    "changed": true,
    "failed": false,
    "flush": false,
    "ip_version": "ipv4",
    "rule": "-j ACCEPT -m state --state ESTABLISHED,RELATED",
    "state": "present",
    "table": "filter"
}

查看结果:

iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED

4. 来自 110.112.11.1 请求的目标端口为 8080 限速为 5/s

ansible dbserver -m iptables -a "chain=INPUT protocol=tcp match=tcp destination_port=8080 source=110.112.11.1 limit=5/s jump=ACCEPT"

执行结果:

{
    "chain": "INPUT",
    "changed": true,
    "failed": false,
    "flush": false,
    "ip_version": "ipv4",
    "rule": "-p tcp -s 110.112.11.1 -m tcp -j ACCEPT --destination-port 8080 -m limit --limit 5/s",
    "state": "present",
    "table": "filter"
}

查看结果:

iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
ACCEPT     tcp  --  110.112.11.1         0.0.0.0/0            tcp dpt:8080 limit: avg 5/sec burst 5

目录

  1. Ansible iptables 模块说明
  2. 参数说明
  3. 使用示例
  4. 1. 添加一条规则,来自 10.1.1.2 的请求都 DROP 掉
  5. 2. 添加一条规则,通过 ens33 进入的请求本地 80 端口转发到 8600
  6. 3. 添加一条规则,所以状态为 RELATED,ESTABLISHED 放行
  7. 4. 来自 110.112.11.1 请求的目标端口为 8080 限速为 5/s

更多推荐文章

查看全部
  • Python FastAPI 入门教程:新手快速上手指南
  • 无人机“黑飞”正式入法:2026 年 1 月 1 日起违规飞行将面临拘留
  • 互联网从业者转行 AIGC 行业指南与机会分析
  • 利用 VibeThinker 自动生成 Git 提交记录
  • Spring Boot 部署优化:打包体积缩小 80% 的实战方案
  • VR 大空间项目内容规划与设计市场经验总结(2023-2026)
  • 通用 LLM Agent 构建指南:从基础到进阶
  • 医疗大模型:互联网巨头与行业玩家的竞争格局
  • GitHub Copilot 接入 MCP 协议实战指南
  • C++ TCP Socket 网络编程基础与封装实战
  • 前端独立完成产品设计全流程:三大 AI 设计技能实战
  • Adoptium Temurin JDK 下载
  • FAIR plus 2026 机器人全产业链链接会技术亮点梳理
  • PUSHI G1 AI+AR 眼镜开源方案:18 个全场景落地与云端联动
  • OpenClaw Browser Relay 接入指南:AI 操控浏览器实战
  • 2026 主流 AI 大模型横评与选型指南
  • Spring Web MVC 入门:从概念到实战(上)
  • MySQL Event 事件是否启用及开启方法
  • 秋田中文离线地图 App 上线
  • Copilot 四种模式深度解析:Ask、Edit、Agent 与 Plan 的区别

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online