当前位置: 首页 > news >正文

从零配置银河麒麟防火墙:V10 SP1系统firewalld保姆级避坑指南

银河麒麟V10 SP1防火墙实战:从零配置到故障排除全指南

第一次接触银河麒麟服务器操作系统的运维工程师,往往会在防火墙配置这个环节栽跟头。不同于常见的CentOS或Ubuntu,银河麒麟V10 SP1虽然也采用firewalld作为默认防火墙工具,但在实际部署中却有不少"中国特色"的注意事项。本文将带你从基础配置一路进阶到故障排查,特别针对生产环境中容易遇到的SSH连接中断、端口不生效等典型问题提供解决方案。

1. 环境准备与基础检查

在开始配置之前,我们需要确保系统环境处于正确的状态。许多配置失败案例都源于基础环境没有准备妥当。

首先确认系统版本和防火墙状态:

# 查看系统版本 cat /etc/kylin-release # 检查firewalld是否安装 rpm -qa | grep firewalld # 查看防火墙状态 systemctl status firewalld

常见问题1:如果发现firewalld未运行,先不要急于启动,应该检查是否有其他防火墙服务在运行。银河麒麟系统有时会同时安装多个防火墙工具:

# 检查iptables服务状态 systemctl status iptables # 检查ebtables服务状态 systemctl status ebtables

如果这些服务处于active状态,需要先停止它们以避免规则冲突:

sudo systemctl stop iptables sudo systemctl stop ebtables sudo systemctl disable iptables sudo systemctl disable ebtables

提示:银河麒麟V10 SP1默认可能同时存在firewalld、iptables和ebtables三个防火墙管理工具,它们都基于内核的netfilter模块,但规则管理方式不同,同时启用会导致不可预知的行为。

2. firewalld核心配置详解

2.1 服务管理与区域配置

正确理解firewalld的区域(zone)概念是配置的关键。银河麒麟默认提供了以下预定义区域:

区域名称默认信任级别典型应用场景
public公共网络环境
work办公网络环境
home中高家庭网络环境
internal内部可信网络
trusted最高完全信任网络

查看当前活跃区域:

sudo firewall-cmd --get-active-zones

更改默认区域(以internal为例):

sudo firewall-cmd --set-default-zone=internal sudo firewall-cmd --reload

关键点:银河麒麟的某些版本在修改默认区域后需要额外执行以下命令才能使更改完全生效:

sudo firewall-cmd --runtime-to-permanent sudo systemctl restart firewalld

2.2 端口与服务管理

开放HTTP服务的两种方式对比:

方法1:通过服务名开放

sudo firewall-cmd --zone=public --add-service=http --permanent

方法2:通过端口号开放

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent

两种方法的区别:

  • 通过服务名管理更规范,firewalld预定义了服务的端口/协议组合
  • 通过端口号更直接,适合非标准端口或自定义服务
  • 银河麒麟对某些服务的定义可能与标准不同,建议使用前先检查:
sudo firewall-cmd --get-services | grep http

典型问题处理:添加规则后不生效?

  1. 确认已使用--permanent参数
  2. 确认已执行firewall-cmd --reload
  3. 检查默认区域是否正确
  4. 验证规则是否真正添加成功:
sudo firewall-cmd --list-all --zone=public

3. 生产环境高级配置

3.1 富规则(Rich Rules)应用

当需要实现复杂访问控制时,富规则提供了更精细的控制能力。例如,只允许特定IP段访问SSH服务:

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept' --permanent

银河麒麟特别注意事项:在V10 SP1某些版本中,富规则的语法检查较为严格,容易因格式问题导致规则添加失败。建议:

  1. 使用单引号包裹整个规则
  2. 等号两边不要有空格
  3. 参数值使用双引号

3.2 应急恢复配置

误配置防火墙导致SSH连接中断是最常见的事故,提前设置应急方案至关重要。

方案1:本地控制台恢复

  1. 通过物理控制台或KVM登录系统
  2. 停止防火墙服务:
sudo systemctl stop firewalld
  1. 删除错误规则:
sudo firewall-cmd --runtime-to-permanent sudo systemctl start firewalld

方案2:定时回滚机制

在修改重要规则前,先设置定时回滚:

# 备份当前规则 sudo firewall-cmd --runtime-to-permanent sudo cp /etc/firewalld/zones/public.xml /etc/firewalld/zones/public.xml.bak # 设置15分钟后自动恢复 echo "sudo cp /etc/firewalld/zones/public.xml.bak /etc/firewalld/zones/public.xml && sudo firewall-cmd --reload" | at now +15 minutes

4. 典型故障排查指南

4.1 SSH连接突然中断

现象:添加防火墙规则后,现有SSH连接断开且无法重新连接。

排查步骤

  1. 检查是否误关闭了SSH端口:
sudo firewall-cmd --zone=public --query-service=ssh
  1. 检查是否设置了过于严格的源IP限制:
sudo firewall-cmd --zone=public --list-rich-rules | grep ssh
  1. 确认默认区域没有改变:
sudo firewall-cmd --get-default-zone

解决方案

通过控制台登录后,添加临时规则恢复访问:

sudo firewall-cmd --zone=public --add-service=ssh --timeout=300

这个规则将在300秒后自动失效,给你足够的时间修复永久规则。

4.2 端口开放但服务仍不可访问

现象:已在防火墙开放端口,但外部仍无法访问服务。

排查流程

  1. 确认服务本地监听正常:
sudo netstat -tuln | grep <端口号>
  1. 检查SELinux状态(银河麒麟默认启用):
getenforce
  1. 查看SELinux相关日志:
sudo ausearch -m avc -ts recent

解决方案

如果是SELinux导致的问题,可以选择以下任一种方法:

  1. 调整SELinux策略:
sudo setsebool -P httpd_can_network_connect 1
  1. 添加SELinux端口标签:
sudo semanage port -a -t http_port_t -p tcp <端口号>
  1. 临时设置为宽容模式(不推荐生产环境):
sudo setenforce 0

5. 性能优化与最佳实践

长期运行的服务器需要考虑防火墙的性能影响,特别是在高流量场景下。

优化建议

  1. 精简规则数量,合并相似规则
  2. 使用ipset管理大量IP地址:
# 创建ipset sudo firewall-cmd --permanent --new-ipset=trusted_ips --type=hash:ip # 添加IP到ipset sudo firewall-cmd --permanent --ipset=trusted_ips --add-entry=192.168.1.1 # 在富规则中引用ipset sudo firewall-cmd --permanent --add-rich-rule='rule source ipset=trusted_ips service name="http" accept'
  1. 定期清理不用的规则和端口:
sudo firewall-cmd --list-all | grep -E '(ports|services)'
  1. 监控防火墙日志:
sudo journalctl -u firewalld -f

银河麒麟特定优化

在某些版本的银河麒麟中,firewalld的日志级别可能过高,导致系统负载增加。可以调整日志级别:

# 查看当前日志级别 sudo firewall-cmd --get-log-denied # 设置为更合理的级别(如unicast) sudo firewall-cmd --set-log-denied=unicast sudo firewall-cmd --runtime-to-permanent

在实际生产环境中,银河麒麟V10 SP1的防火墙配置需要特别注意版本差异。不同补丁级别的系统可能在firewalld的行为上有细微差别。建议在重要变更前,先在测试环境验证,并做好完整的回滚方案。

http://www.jsqmd.com/news/522735/

相关文章:

  • AI头像生成器性能测试:GPU加速下的生成效率
  • cv_resnet101_face-detection_cvpr22papermogface高性能部署:GPU显存占用与推理速度实测
  • 【Dv3Admin】FastCRUD统一调整Tab操作
  • 保姆级教程:用STM32的PWM信号控制3WE6B61B电磁阀(附完整驱动电路图)
  • UCF-101数据集阿里云分卷下载指南与动作识别应用解析
  • 网络安全这行是学历优先还是能力优先?学网络安全需要什么学历?
  • 9 改进提效:找到规律,让成功可复制
  • 书匠策AI:解锁论文数据分析新次元的“智慧钥匙”
  • 2026年就业寒冬下,有个行业327万人才缺口,IT行业薪资断层领先,小白如何抓住红利?
  • VS Code Remote SSH 登录 Codex 报错 Token exchange failed: token endpoint returned status 403解决方案
  • LoRA训练助手行业方案:为AI艺术教育平台定制化训练标签教学系统
  • 第 478 场周赛Q3——3761. 镜像对之间最小绝对距离
  • 算法:动态规划基础(中):树型dfs+回溯+记忆化搜索
  • 雯雯的后宫-造相Z-Image-瑜伽女孩保姆级教程:从镜像拉取到生成首张瑜伽图
  • 论文阅读 EMNLP 2025 Reasoning-to-Defend: Safety-Aware Reasoning Can Defend Large Language Models from Ja
  • VideoAgentTrek-ScreenFilter效果展示:同一视频不同conf阈值下的漏检/误检对比
  • 卡证检测模型在低代码平台中的应用:赋能业务人员快速搭建应用
  • MATLAB实战:蓝牙GFSK调制解调全流程解析(附误码率优化技巧)
  • WuliArt Qwen-Image Turbo 5分钟极速部署:24G显存跑通高清文生图
  • 墨语灵犀保姆级教程:Mac M1/M2芯片原生支持部署与性能实测
  • 新手必看!Docker pull报错全攻略:从超时到认证失败的7种解决方案
  • Phi-3-mini-128k-instruct一文详解:Phi-3系列中唯一支持128K上下文的指令模型
  • AST | 西工大崔榕峰、张伟伟等:基于物理约束与双并行注意力UNet++的高保真度三维机翼流场重构研究
  • Unity弹窗背景虚化效果实战:5分钟搞定高斯模糊Shader(附完整代码)
  • 储能系统——05 常用一二次电缆
  • Self-Play RL实战:如何用Python和OpenAI Gym搭建自己的AI对弈环境
  • 3个核心功能让零基础用户实现高效地理数据编辑
  • mPLUG视觉问答作品展示:餐厅菜单价格识别案例
  • 幻镜视觉重构实验室部署:Kubernetes集群中幻镜服务弹性扩缩容实践
  • K210串口通信实战:从引脚映射到数据回传(附完整代码)