关于ubuntu80\8080不通,引发的防火墙思考。

327 阅读3分钟

昨晚出现问题:

  1. 我的ubuntu服务器80 8080端口不通
  2. 新开的端口一样也不通,
  3. 查看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/