首页 tutorials VPS 防火墙入门:ufw 常用规则与端口开放排查

VPS 防火墙入门:ufw 常用规则与端口开放排查

Hostease高防服务器5折优惠

刚拿到一台新 VPS(虚拟专用服务器),第一件事往往不是装面板,而是处理防火墙:SSH(安全外壳协议)连不上、网站打不开、Ping 得通但端口不通,十有八九都卡在这一层。这篇指南解决的就是这个高频问题——如何用 ufw(Uncomplicated Firewall,Ubuntu 自带的防火墙管理工具)把常用规则配明白,并在端口打不开时按正确顺序排查。在我的测试环境中,一台全新的 Ubuntu 22.04 机器从开启 ufw 到完成 Web 端口放行,只需要六条命令;而排查一个”端口不通”的工单,最常见的原因其实是三个:规则没放行、服务没监听、云平台安全组没开。下面按实际操作顺序展开,每一步都给出可直接复制的命令。

先搞懂 ufw 的默认逻辑:默认拒绝,按需放行

ufw 的设计哲学一句话就能说清:默认拒绝所有入站,默认允许所有出站。你做的每一件事,都是在这个默认策略上”打洞”。相比直接操作 iptables(Linux 内核级防火墙工具)动辄几十条链表规则,ufw 把日常操作压缩成了几句人话命令,这也是它能在 Ubuntu 生态成为默认推荐的原因。

为什么这个默认策略重要?因为大量新手翻车的场景是:先执行 ufw enable,然后 SSH 直接断开,再也连不上。正确顺序永远是——先放行 SSH,再启用防火墙:

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

ufw status verbose 会显示当前状态、默认策略和已生效规则。如果输出里 Status: active 且三条 allow 都在,Web 基础端口就已经通了。改过 SSH 端口(比如 2222)的机器,务必把 22 换成实际端口——这条规则就是你保命的绳子。

ufw 常用规则:按场景记这六种形态就够了

日常运维中真正高频的规则形态只有六种,逐一列出,建议收藏备用:

  • 放行单个端口:sudo ufw allow 8080/tcp——适用于临时调试的应用端口。
  • 按服务名放行:sudo ufw allow "Nginx Full"——自动展开为 80 和 443,服务名定义在 /etc/ufw/applications.d/ 目录。
  • 只允许指定 IP 访问管理端口:sudo ufw allow from 203.0.113.10 to any port 22 proto tcp——把 SSH 收紧到办公网出口,是性价比最高的一招加固。
  • 放行端口段:sudo ufw allow 6000:6010/tcp——必须显式写 /tcp 或 /udp,否则两个协议会同时放行。
  • 删除规则:sudo ufw delete allow 8080/tcp——也可以先 ufw status numbered 再按编号删除。
  • 显式拒绝:sudo ufw deny 3306/tcp——对 MySQL(关系型数据库)这类不该暴露的端口明确拒绝,让外部扫描吃闭门羹。

理解规则顺序是避坑的关键:ufw 按添加顺序自上而下匹配,第一条命中的规则生效,后面的不再看。所以”先 deny 后 allow”和”先 allow 后 deny”结果完全不同。举个真实案例:有人想把 SSH 限制到指定 IP,先执行了 allow 22/tcp,事后补了一条 deny 22/tcp,结果所有 IP 照样能连——因为流量在第一条 allow 就命中放行了。正确做法是删掉旧的 allow 规则,只保留带 IP 限制的那条。检查顺序用 sudo ufw status numbered,输出里每条规则前的编号就是匹配优先级。

ufw 规则自上而下匹配示意:允许、告警与拒绝三种结果

端口打不开?按这三层顺序排查

“端口不通”很少是单一原因,效率最高的排查方式是按流量经过的路径分层检查:云平台安全组 → 系统防火墙 → 服务监听。任何一层拦住,外部的表现都是同样的超时,所以要一层层排除,而不是上来就乱改配置。

第一层,先确认服务真的在监听目标端口。在服务器上执行:

sudo ss -tlnp | grep -E ':(80|443|8080)'
# 或者老系统
sudo netstat -tlnp | grep 8080

如果输出为空,问题根本不在防火墙——是应用没启动,或者绑定到了 127.0.0.1 只接受本机访问。Web 服务必须绑定 0.0.0.0(或公网 IP)才能接受外部流量,这是新手第二常见的坑,实测出现过部署 Node 应用后 localhost 能访问、公网连不上的案例,把监听地址改成 0.0.0.0 后立即恢复。

第二层,检查 ufw 是否放行。sudo ufw status numbered 里找不到对应端口的 allow,就补一条。如果规则存在但排在 deny 之后,按上一节的方法调整顺序。想确认防火墙到底拦了多少包,可以打开日志:sudo ufw logging on,然后 sudo dmesg | grep '\[UFW' 能看到每一条被拦截流量的来源 IP、目标端口和动作,实测比凭感觉猜快得多。

第三层,别忘了云平台安全组。ufw 是系统层防火墙,而多数服务商在宿主网络层还有一道安全组或防火墙模板,两层是串联关系,任何一层不放行都不通。系统里 ufw status 明明放行了、外网 telnet 依然超时,八成是控制台里的安全组没开对应端口。这一层经常被忽略,因为它完全不在服务器内部,ss 和 ufw 都看不到它。排查命令从外部验证:

telnet 203.0.113.50 443
# 或者装了 nmap 的话
nmap -p 443 203.0.113.50

输出 Connection refused 和 Connection timed out 含义完全不同:refused 说明流量到了机器但端口没服务,timeout 才是防火墙或安全组在拦截。抓住这个区别,能把排查范围砍掉一半。

顺带说一句,端口问题和网络线路问题要区分开:如果是访问慢而不是彻底不通,那大概率是路由和线路质量的事,可以参考这篇影响美国 VPS 服务器速度的核心因素与优化指南,两者思路互补。另外很多新手纠结 VPS 和虚拟主机怎么选,这篇虚拟主机 vs. VPS:性能、权限与成本全维度对比讲得比较全面——只有拿到独立系统权限,防火墙这一层才归你自己管。

端口开放排查场景:从本地经网络线路验证服务器端口连通性

总结:一套可以照抄的上线检查清单

回顾全文,ufw 防火墙管理的核心是三件事:理解”默认拒绝、按需放行”的默认策略,记住六种常用规则形态,排查端口问题时按”服务监听 → ufw → 安全组”的顺序分层检查。把它固化成一套上线流程,新机器开通后照着走一遍:

  1. 先放行 SSH 实际端口,再 ufw enable,保住连接;
  2. 按业务放行 Web 端口(80/443),数据库端口保持 deny 或不放行;
  3. 把 SSH 收紧到常用出口 IP,减少暴露面;
  4. 部署应用后用 ss -tlnp 确认监听地址是 0.0.0.0;
  5. 外部 telnet 验证端口,refused 查服务、timeout 查防火墙和安全组。

建议把这份清单存成运维手册的一部分,每次开通新 VPS 都过一遍。如果你需要一台开箱即可自主管理防火墙的 VPS,Hostease 的美国 VPS(虚拟专用服务器)方案带独立 root 权限和中文客服支持,搭配本文的 ufw 流程可以直接落地;选购前也可以对照这篇美国 VPS 选购指南:五大核心指标一次看懂做决策。防火墙不是配完就结束的东西——每次新增服务、每次收到扫描告警,都回到 ufw status numbered 看一眼规则表,保持最小放行原则。总结成一句话:规则跟着业务走,端口开放必须有明确理由,这台机器的安全性就已经超过大多数同类配置了。

本文来自网络,不代表WHT中文站立场,转载请注明出处。https://www.webhostingtalk.cn/tutorials/vps-ufw-firewall-rules-port-troubleshooting/
Raksmart新用户送100美元红包
下一篇
VPS 防火墙示意图:盾墙拦截外部流量,仅放行必要端口

已经没有了

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

联系我们

邮箱: contact@webhostingtalk.cn

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部