文章目录
- 一、核心功能描述
- 二、roles内容
- 2.1 文件结构
- 2.2 主配置文件
- 2.3 tasks文件内容
免费个人运维知识库,欢迎您的订阅:literator_ray.flowus.cn
一、核心功能描述
这个 Ansible Role (firewalld
) 的核心功能是:动态地、安全地配置 firewalld
,实现基于指定 IPSet 的白名单规则,精确控制特定 TCP 端口的访问权限。
关键特性与可变性:
-
灵活的端口控制:
-
核心任务是管理一个特定的 TCP 端口。
-
端口号(如示例中的
19100
)是完全可配置的变量。Role 可以通过变量轻松应用于管理任何 TCP 端口。
-
-
动态的 IP/IP 段管理 (基于 IPSet):
-
访问控制的核心是使用
ipset
。 -
IPSet 名称(如示例中的
test
)是可配置的。 -
允许访问的 IP 地址或网段(如示例中的
192.141.254.0/24
,192.142.254.0/24
)是可变且可扩展的列表。Role 可以通过修改loop
列表轻松添加、删除或更改允许的源 IP 范围。
-
-
基于 IPSet 的精细化访问规则:
-
创建一个
firewalld
富规则 (rich rule)。 -
该规则利用配置好的 IPSet 名称 作为源 (
source ipset=...
)。 -
该规则针对配置好的 TCP 端口 (
port protocol=tcp port=...
)。 -
规则动作是明确允许符合条件(匹配 IPSet 来源且访问目标端口)的流量 (
accept
)。
-
-
安全的变更过程:
-
在添加新规则前,总是先删除目标端口上可能存在的旧规则(通过
del_rule.yml
)。这确保了:-
避免规则冲突或重复。
-
提供幂等性(多次运行结果一致)。
-
为新的、基于 IPSet 的规则提供一个干净的状态起点。
-
-
配置采用
permanent: yes
确保规则持久化。 -
执行重载 (
reloaded
) 使所有变更(IPSet 创建/更新、规则添加/删除)立即生效。
-
可以根据自己的实际需求修改脚本
二、roles内容
2.1 文件结构
firewalld/
`-- tasks|-- add_rule.yml|-- del_rule.yml`-- main.yml1 directory, 3 files
2.2 主配置文件
---
- hosts: 192.141.106.24remote_user: rootserial: 5roles:- firewalld
2.3 tasks文件内容
- main.yml
- include: del_rule.yml
- include: add_rule.yml
- include: del_rule.yml
- name: del ports rule 19100firewalld: port=19100/tcp zone=public permanent=yes immediate=yes state=disabled
- include: add_rule.yml
- name: add ipsetsshell: firewall-cmd --permanent --new-ipset=test --type=hash:ip;firewall-cmd --permanent --ipset=test --add-entry={{ item }}loop:- 192.141.254.0/24- 192.142.254.0/24 - name: add port rule 19100firewalld:permanent: yeszone: publicrich_rule: rule family=ipv4 source ipset=test port protocol=tcp port=19100 acceptstate: enabled- name: firewalld reloadservice: name=firewalld state=reloaded
如果你不请什么是ansible中的角色,动动你的小手,跳转过去看看呗“roles角色”
请不要以此视为定论,这只是我的个人经验