ubuntu防火墙指定端口开放设置

[复制链接]
发表于 2026-10-6 13:51:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

Ubuntu 上刚装好一个服务,本地 curl 能通,外面却连不上,八成是防火墙没放行。Ubuntu 默认的防火墙工具是 ufw(Uncomplicated Firewall),它对 iptables 做了一层好用的封装,开端口就一行命令。本文把启用、放行、查状态的完整流程和几个容易搞错的地方讲清楚。

一、开端口的三步

第一步:确认 ufw 是启用状态

sudo ufw enable

输入后会提示确认,输 y 回车。如果防火墙本来就是启用的,这条命令不会有副作用,只是再确认一次。

第二步:放行指定端口

以放行 8080 为例:

sudo ufw allow 8080

不带协议时,TCP 和 UDP 会一起放行。只想放行其中一种,就显式带上:

sudo ufw allow 8080/tcp
sudo ufw allow 8080/udp

注意端口和协议之间是斜杠,别写成空格或者冒号,写错了 ufw 会报 ERROR: Bad port 之类的提示。

第三步:查看状态

sudo ufw status

这条只列出规则与动作。想看更完整的信息(默认策略、日志日志开关等):

sudo ufw status verbose

再详细一档,显示编号、规则类型:

sudo ufw status numbered

二、一次完整的例子

sudo ufw enable
sudo ufw allow 8080
sudo ufw status

第三条命令的典型输出:

Status: active

To                         Action      From
--                         ------      ----
8080                       ALLOW       Anywhere
8080 (v6)                  ALLOW       Anywhere (v6)

两行分别对应 IPv4 和 IPv6,都出现才说明这个端口在两种协议下都能访问。

三、比「放行端口」更该用的做法

只写 sudo ufw allow 8080 等于对全世界开放这个端口。只要这个服务在公网上,就应该顺手把来源限制加上:

sudo ufw allow from 192.168.1.0/24 to any port 8080 proto tcp

这样只有内网网段能访问。运维上更推荐按服务名放行而不是裸端口,比如 OpenSSH、Nginx Full 这类预设。

sudo ufw app list
sudo ufw allow OpenSSH

四、常用管理命令

  • 查看规则编号:sudo ufw status numbered
  • 按编号删除:sudo ufw delete 3
  • 按规则删除:sudo ufw delete allow 8080
  • 临时关闭:sudo ufw disable
  • 重置所有规则:sudo ufw reset(会清空全部规则,慎用)
  • 看日志日志:sudo tail -f /var/log/ufw.log

五、改了不生效时的排查顺序

  • 看看服务本身监听没:sudo ss -lntp | grep 8080,端口没在听,防火墙放行也没用。
  • 服务是否只绑在 127.0.0.1:绑了本地回环的话,从外面永远连不上,要改成 0.0.0.0 或具体内网网卡。
  • 云服务器还有一层安全组:ufw 放行了、安全组没放,外面照样不通。
  • ufw 规则顺序:ufw 按规则先后匹配,前面有 deny 规则命中就不会继续往后看,用 numbered 检查顺序。
  • IPv6:如果服务只监听 IPv4,而客户端走的是 v6,也会连不上。

六、两个安全提醒

第一,启用 ufw 之前务必先确认 SSH 端口已放行,否则一旦 enable 而 22 没放,你当场就被自己关在门外——这是这类操作最常见的事故。稳妥顺序是:sudo ufw allow OpenSSH 之后再 sudo ufw enable。第二,不要为了排障图省事直接 ufw disable 了事,正确的做法是精确放行必需端口,其余保持拒绝。

qidao123.com企服评测-应用市场 编辑提示

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表