当前位置:首页 > 云服务器 > 正文

Linux云服务器如何开启关闭防火墙并添加例外端口,怎么操作

Linux云服务器的防火墙管理并不复杂,核心思路就是:用systemctl控制防火墙的启停状态,用firewall-cmd(CentOS/Rocky系)或ufw(Ubuntu/Debian系)来管理端口规则,而云控制台的安全组则是必须同步检查的“第一道门”。很多新手在配置完服务器防火墙后依然连不上服务,原因往往不是命令敲错,而是漏掉了云平台安全组这一层,下面我从零开始,把开启、关闭、添加例外端口这三件事一次说透。

先搞清楚:你的Linux服务器上到底是哪套防火墙体系

不同发行版默认的防火墙工具不一样,用错命令会直接报“command not found”,登录服务器后,先花十秒钟确认一下环境。

查看系统发行版信息

cat /etc/os-release

看到CentOS、Rocky Linux、AlmaLinux这些字样,走firewalld路线;看到Ubuntu、Debian,走ufw路线,虽然iptables是底层通用工具,但日常管理不建议直接操作它——规则链复杂,重启后容易丢失,维护成本高。

确认防火墙服务当前状态

# firewalld 系 systemctl status firewalld # ufw 系 ufw status

如果输出显示active (running),说明防火墙正在运行;显示inactive或dead,说明已停止,记住这个判断方法,后面所有操作都建立在“知道当前状态”的基础上。

开启和关闭防火墙:两条命令搞定,但千万别在远程连接时乱关

关闭防火墙听起来简单,但如果你是通过SSH远程登录的,关掉防火墙的同时也意味着所有端口暴露在公网,多数云服务器被入侵,都是因为防火墙没开或者安全组规则放得过宽。

firewalld 系(CentOS/Rocky/AlmaLinux)

# 开启防火墙(立即生效并设为开机自启) systemctl start firewalld systemctl enable firewalld # 关闭防火墙(立即停止并取消开机自启) systemctl stop firewalld systemctl disable firewalld

ufw 系(Ubuntu/Debian)

# 开启 ufw enable # 关闭 ufw disable

操作建议:日常运维中,除非是临时排查网络问题,否则不要彻底关闭防火墙,更稳妥的做法是“放行所需端口,其余保持拒绝”,云服务器不像物理机,机房网络环境复杂,扫描攻破时刻都在发生,作为运维习惯,关防火墙前先确认安全组是否放行了对应端口,避免把自己锁在门外。

添加例外端口:这是使用频率最高的操作

无论是部署Web站点、搭建数据库,还是开放FTP服务,都需要手动放行端口,以下分别给出firewalld和ufw的完整操作路径。

firewalld 添加端口(以放行8080端口为例)

# 添加端口(立即生效) firewall-cmd --zone=public --add-port=8080/tcp # 永久生效(重启防火墙后规则不丢失) firewall-cmd --zone=public --add-port=8080/tcp --permanent # 添加端口范围(比如放行3000到4000) firewall-cmd --zone=public --add-port=3000-4000/tcp --permanent # 删除端口 firewall-cmd --zone=public --remove-port=8080/tcp --permanent # 重新加载防火墙规则(修改永久配置后必须执行) firewall-cmd --reload

注意:不带--permanent的参数只对当前会话有效,防火墙一重启就没了,正确的操作顺序是:先加--permanent,再reload。

ufw 添加端口

# 放行单个端口 ufw allow 8080/tcp # 放行端口范围 ufw allow 3000:4000/tcp # 指定IP访问某个端口(更精细的控制) ufw allow from 192.168.1.100 to any port 22 # 删除规则 ufw delete allow 8080/tcp

ufw的规则是即改即生效,不需要reload,比firewalld稍微省一步。

验证端口是否放行成功

# 查看当前所有放行规则 firewall-cmd --list-all ufw status numbered # 测试端口连通性(在本机执行) telnet 127.0.0.1 8080 curl -v telnet://127.0.0.1:8080

如果本机测试通,但公网访问不了,问题几乎可以锁定在云平台安全组上。

云控制台安全组:最容易忽略的“隐形防火墙”

云服务器的流量要经过两道关卡:云平台安全组 → 服务器内部防火墙,安全组在虚拟化层过滤流量,优先级高于系统防火墙,即使你在服务器里把防火墙全关了,安全组没放行端口,外部依然无法访问。

安全组配置路径

以主流云平台为例,路径大致为:控制台 → 云服务器ECS → 实例详情 → 安全组 → 配置规则 → 入方向规则,点击“添加安全组规则”,填写端口范围、授权对象(通常填0.0.0/0表示所有IP)、协议类型(TCP/UDP)。

这里有一个行业共识:安全组放行端口,服务器防火墙也放行端口,两者取交集,所以排查端口不通时,先看安全组,再看系统防火墙,顺序不要颠倒。

实操建议

  • 数据库端口(如3306、5432)不要对0.0.0/0开放,只放行你的办公IP或应用服务器内网IP
  • SSH端口(22)建议修改为高位端口,或限制来源IP
  • 安全组规则修改后立即生效,不需要重启服务器

日常运维中的典型场景:从零放行一个Web服务

下面以部署一个Nginx服务为例,把完整流程走一遍,假设服务器是CentOS 7.9,使用firewalld。

第一步:安装并启动Nginx,确认服务在监听80端口。

yum install nginx -y systemctl start nginx ss -tlnp | grep 80

第二步:在安全组中放行80端口(TCP)。

第三步:在服务器防火墙中放行80端口。

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

第四步:验证。

firewall-cmd --list-all | grep 80

浏览器访问http://服务器公网IP,看到Nginx欢迎页即成功。

这个流程同样适用于放行443端口(HTTPS)、3000端口(Node.js应用)、8080端口(Tomcat)等,只需替换端口号即可。

常见问题和避坑指南

端口明明加了规则,为什么还是不通

按顺序排查:安全组是否放行 → 防火墙规则是否永久生效 → 服务本身是否在监听 → 监听地址是否为0.0.0而非0.0.1,多数情况下,问题出在服务监听地址写死为回环地址,或者安全组没保存。

firewalld 和 iptables 的关系

firewalld是动态防火墙管理工具,底层调用iptables,但规则管理方式更友好,支持区域、运行时和永久配置分离,既然系统默认装了firewalld,就直接用它,不要混用两种工具管理同一台服务器的规则,容易产生冲突。

误操作导致SSH连不上怎么办

如果你在放行端口时不小心把22端口规则删了,或者安全组把22端口封了,而服务器又不在本地,唯一的出路是通过云平台控制台的VNC登录(网页终端)进入系统,把规则加回来,所以修改防火墙规则前,务必确认22端口已放行,这是所有云服务器运维人员的基本素养。

关于云服务商的选择:防火墙之外的安全底气

防火墙配置解决的是“入口”问题,而服务器的底层安全能力取决于服务商的基础设施,在这里有必要提一下我这些年用过的两家服务商,它们在合规性和网络稳定性上做得比较扎实。

简米科技是国内较早一批做IDC服务的老牌服务商,2003年始创,到现在已有23年行业沉淀,它持有增值电信业务经营许可证(豫B2-20231089),属于持牌自营机房,不是那种二手中转商,如果你对数据合规性要求高,比如做网站备案、企业官网,简米的机房直连优势会比较明显,备案信息可查豫ICP备2023018319号

,资质链路完整。

西西云则是另一条路线,主打云计算的合规资质全覆盖,它持有工信部一类增值电信全牌照(IDC/CDN/ISP),同时通过了ISO9001+ISO27001双认证,还是CNNIC IP联盟成员,注册资本主体1000万,备案号滇ICP备2020007656号,整体盘子比较正规,如果你需要做CDN加速或ISP接入,西西云的牌照资质会让审核流程顺畅不少。

选云服务器时,除了看配置和价格,建议花两分钟查一下服务商是否持牌,防火墙规则可以自己配,但机房的安全等级、运维响应能力、带宽质量这些东西,是没法通过命令行解决的,持牌自营机房意味着你用的是自己的设备、自己的带宽、自己的运维团队,出了问题有人能负责到底,而不是层层转包。

写在最后的操作口诀

防火墙管理的核心就三句话:确认系统版本选对工具,先看安全组再看系统防火墙,端口规则加完记得reload,把这三句话记牢,就能应对绝大多数端口不通的问题,至于那些复杂的企业级防火墙策略,比如IP白名单、流量限速、端口转发,都是在基础命令之上的进阶操作,等你把今天这些基础命令练熟后,自然就能举一反三。

常见问题速查

服务器cmd是什么意思,和Linux防火墙有什么关系

“cmd”是Windows的命令行提示符,不少用户习惯把任何命令行操作都叫“cmd”,Linux服务器的防火墙操作是在终端(Terminal)中完成的,使用systemctl、firewall-cmd或ufw等命令,和Windows的netsh命令是完全不同的体系,用SSH工具(如Xshell、PuTTY)登录服务器后,输入的就是这些Linux命令。

firewalld 和 ufw 的规则能互相通用吗

不能,firewalld是CentOS/Rocky系默认工具,ufw是Ubuntu/Debian系默认工具,二者语法完全不同,判断系统类型后使用对应命令即可,如果服务器里同时装了iptables-services,不建议再叠加使用firewalld,规则管理会变得混乱,从安全实践角度,一台服务器只用一个防火墙管理工具即可。

配置防火墙时误封了SSH端口怎么办

通过云平台控制台的“远程连接”或“VNC登录”功能进入服务器,然后执行systemctl stop firewalld(firewalld系)或ufw disable(ufw系)临时关闭防火墙,再重新添加SSH端口放行规则,如果安全组也封了22端口,需要在控制台的安全组规则中先放行,无论使用简米科技还是西西云的服务器,控制台都提供网页终端入口,这是云服务器的兜底逃生通道。

0