昨晚出现问题:
- 我的ubuntu服务器80 8080端口不通
- 新开的端口一样也不通,
- 查看ufw状态是关闭的,系统的安全组也没问题
故百思不得其解,以前不是打开了安全组,端口就正常了吗 ? 并且ufw也是关闭状态 。。
之后经过详细的探索,发现问题是ubuntu误装了firewalld防火墙导致,后关闭或卸载firewalld后,服务恢复了。
也就是说,问题是由于,系统出现了2个防火墙导致的
以下先对firewalld用法介绍、常用指令、卸载 , 并对比其和ufw区别。
关于系统防火墙
一、网络分层差异
阿里云安全组
作用层级:虚拟化网络层(相当于云平台入口防火墙)
功能:控制ECS实例的入方向/出方向流量,流量未到达服务器前就会被过滤
特点:配置后立即生效,无需服务器内部操作
firewalld/ufw/iptables
作用层级:操作系统层(服务器本地防火墙)
功能:控制本机的端口监听和流量转发,即使安全组放行,本地防火墙仍可能拦截
特点:需要手动配置(如你执行的firewall-cmd命令)
二、配置系统firewalld :
# 本地防火墙放行端口(必需)
sudo firewall-cmd --zone=public --add-port=端口号/tcp --permanent
sudo firewall-cmd --reload
# 阿里云安全组同步放行(必需)
三、查看和关闭firewalld:
systemctl status firewalld # 查看是否启用
firewall-cmd --state # 确认运行状态
查看防火墙已开启通行的端口:
sudo firewall-cmd --zone=public --list-all # 当前生效配置
sudo firewall-cmd --zone=public --list-all --permanent # 永久配置
关闭firewalld:
systemctl stop firewalld # 临时关闭
systemctl disable firewalld # 永久禁用(不推荐,降低安全性)
四、firewalld 和 ufw 的差异:
都是 Linux 系统中管理防火墙规则的工具,但它们的定位、设计理念和适用场景有显著差异:
值得注意的是: ubuntu执行 apt install firewalld 后,也能安装 firewalld !
两者本质都是 iptables 的前端,最终生成的规则会体现在 iptables-save 或 nft list ruleset 中。
尽量不要混合使用两者!同一系统上同时操作可能导致规则冲突(建议通过 systemctl stop ufw + systemctl disable ufw 禁用不用的工具)
五、firewalld 、ufw其他常用指令:
动态规则管理 可直接修改规则并立即生效(例如添加端口无需断开现有连接)。
Zone 网络分区 为不同网络环境(如 public、home、internal)预设不同的安全策略。
# 查看所有zone
firewall-cmd --get-zones
# 查看默认zone配置
富规则(Rich Rules) 支持复杂条件(如源IP、时间、协议组合)
firewall-cmd --list-all
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="22" protocol="tcp" accept'
ufw 核心优势:
极简语法 通过直观命令快速完成常见操作:
ufw allow 80/tcp # 放行端口
ufw deny from 1.2.3.4 # 封禁IP
ufw enable # 启用防火墙
卸载firewalld指令:
1. 停止 firewalld 服务
sudo systemctl stop firewalld
2. 禁用 firewalld 开机自启
sudo systemctl disable firewalld
3. 彻底卸载 firewalld 软件包(包含配置文件)
sudo apt purge firewalld -y
4. 删除残留配置(可选)
sudo rm -rf /etc/firewalld/