# firewalld **Repository Path**: cui-jiangwei/firewalld ## Basic Information - **Project Name**: firewalld - **Description**: firewall-cmd脚本生成的一个小工具 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-21 - **Last Updated**: 2026-05-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 防火墙规则自动生成工具 一个基于 Python Flask 的 Web 工具,用于将 Excel 文件中的网络规则转换为 RHEL 9.6 firewalld 脚本。 ## 功能特性 - 📁 **拖拽上传**: 支持拖拽上传 Excel 文件 - ✅ **数据校验**: 自动校验 IP 地址、端口号、协议类型的合法性 - 📊 **规则展示**: 解析后以表格形式展示所有规则 - 📝 **脚本生成**: 自动生成 firewalld --add-rich-rule 脚本 - 📋 **一键复制**: 支持一键复制生成的脚本 - 📥 **脚本下载**: 支持下载生成的 .sh 脚本文件 ## Excel 模板格式 请确保 Excel 文件 (.xlsx) 包含以下列: | 列名 | 说明 | 示例 | |------|------|------| | 源IP | 源地址 IPv4 | 192.168.1.100 | | 源端口 | 源端口号 (1-65535) | 8080 | | 目的IP | 目的地址 IPv4 | 10.0.0.5 | | 目的端口 | 目的端口号 (1-65535) | 443 | | 协议 | TCP 或 UDP | TCP | ### 示例表格 | 源IP | 源端口 | 目的IP | 目的端口 | 协议 | |------|--------|--------|----------|------| | 192.168.1.100 | 8080 | 10.0.0.5 | 443 | TCP | | 10.0.0.200 | 3000 | 172.16.0.1 | 80 | UDP | | 192.168.0.50 | 22 | 192.168.0.1 | 22 | TCP | ## 生成脚本格式 生成的脚本包含以下内容: ```bash #!/bin/bash systemctl start firewalld systemctl enable firewalld firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=A port port=B protocol=C destination address=D port port=E accept" firewall-cmd --reload echo "防火墙规则加载完成" ``` ## 部署步骤 ### 方式一:直接运行 ```bash # 安装依赖 pip install -r requirements.txt # 启动服务 python app.py ``` 服务将在 `http://localhost:5000` 启动。 ### 方式二:使用 Docker(推荐) ```bash # 使用 docker-compose 启动 docker-compose up -d ``` 服务将在 `http://localhost:5000` 启动。 ### 方式三:手动构建 Docker 镜像 ```bash # 构建镜像 docker build -t firewall-tool . # 运行容器 docker run -d -p 5000:5000 firewall-tool ``` ## RHEL 9.6 使用方法 1. 下载生成的 `firewall_rules.sh` 脚本 2. 将脚本上传到 RHEL 9.6 服务器 3. 执行以下命令: ```bash # 赋予执行权限 chmod +x firewall_rules.sh # 执行脚本 sudo ./firewall_rules.sh ``` ## 项目结构 ``` . ├── app.py # Flask 后端应用 ├── requirements.txt # Python 依赖列表 ├── templates/ # HTML 模板 │ └── index.html # 主页面 ├── static/ # 静态资源 │ └── style.css # 样式文件 ├── Dockerfile # Docker 镜像构建文件 ├── docker-compose.yml # Docker Compose 配置 └── README.md # 项目说明文档 ``` ## 常见问题 ### Q: 上传文件时提示"仅支持.xlsx格式文件" A: 请确保上传的文件是 Excel 2007+ 格式 (.xlsx),不支持旧版 .xls 格式。 ### Q: 为什么有些规则显示为"无效" A: 无效规则可能是以下原因之一: - IP 地址格式不正确(如 256.0.0.1) - 端口号不在 1-65535 范围内 - 协议不是 TCP 或 UDP - 单元格为空或包含非法字符 ### Q: 脚本执行后没有生效 A: 请检查: 1. 是否以 root 权限执行脚本(需要 sudo) 2. firewalld 服务是否正常运行 3. SELinux 策略是否允许防火墙配置 4. 可以使用 `firewall-cmd --list-all` 检查规则是否已添加 ### Q: Docker 启动后无法访问 A: 请检查: 1. 容器是否正常运行:`docker ps` 2. 端口 5000 是否被占用:`netstat -tlnp | grep 5000` 3. 防火墙是否允许访问端口 5000 ## 技术栈 - Python 3.11 - Flask 2.3.3 - pandas 2.1.4 - openpyxl 3.1.2 - Gunicorn(生产环境) ## 许可证 MIT License