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

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

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

人间过客发布于 2025/1/19更新于 2026/6/1022 浏览
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
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 力扣第 46、47 题:全排列与去重全排列算法解析
  • Windows 10 系统安装 MySQL 9.4.0 教程
  • Python-SocketIO 命名空间:构建模块化实时应用
  • GitHub Desktop 中文汉化方法:界面本地化配置指南
  • C++ 入门基础:历史渊源、应用场景与学习建议
  • 国产AI大模型名单详解:文心一言、通义千问等主流模型介绍
  • C++26 反射机制概述与典型应用场景
  • Python 金融量化分析:7 天核心技能速成
  • NISP 一级备考常见易错题型整理
  • 垂直微调大模型与通用大模型在情感场景下的能力对比分析
  • Whisper Large v3 多语言语音识别 Web 服务部署实战
  • C++ 轻量级本地文件共享服务器:浏览器直接访问方案
  • 小巧的 MCPHost:命令行大模型上下文协议交互实践
  • Windows 系统快速部署 llama-cpp-python 实现 AI 模型本地推理
  • 二分算法实战:查找元素首尾位置及区间计数
  • GoLand + CPolar 实现远程连接公司服务器开发
  • macOS 终端隐藏用户名但保留目录与 Git 分支(Oh My Zsh + agnoster)
  • 基于STM32标准库的智能小车避障与循迹实战
  • Ground Slow, Move Fast: Dual-System VLN
  • WebGIS 实现城市停水影响范围可视化实践

相关免费在线工具

  • 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