ufw · 防火墙门卫
上游:sudo(改防火墙规则必须 sudo)· [ping] 下游:systemctl(让服务跑起来后开放端口就靠它) 参见:Minecraft-Bedrock-Server(开 19132 端口让小伙伴连进来)
一句话是什么
ufw 是 Ubuntu 的防火墙管理工具——决定哪些端口对外开放、哪些不许碰。
服务器 = 一栋大楼,每个端口 = 一扇门,ufw = 门卫。
为什么需要它
Aaron 的 MC 服务器跑起来了,但小伙伴的 iPad 连不上。 排查一圈,问题在防火墙:
服务器里 bedrock_server 正在监听 19132 端口 ✅
但是 Ubuntu 的防火墙 **默认把所有外来的敲门挡在门外** ❌
结果:iPad 发出"我想连 19132",Ubuntu 当成陌生人直接拒绝
解决办法只有一行:
sudo ufw allow 19132/udp这就是告诉门卫:19132 号门的访客可以进。
核心用法
公式
sudo ufw [动作] [端口/协议]
常用命令表
| 命令 | 说明 | 什么时候用 |
|---|---|---|
sudo ufw status | 查看当前规则 | 每次动手前先看一眼 |
sudo ufw allow 端口/协议 | 允许某端口通过 | 开放 MC 端口 |
sudo ufw deny 端口/协议 | 拒绝某端口 | 要关掉某个临时开的服务 |
sudo ufw delete allow 端口 | 删除一条 allow 规则 | 改错了要撤销 |
sudo ufw enable | 启用防火墙 | 第一次设置完规则后 |
sudo ufw disable | 关闭防火墙 | 排查问题时临时关掉 |
sudo ufw reset | 清空所有规则 | 要重新开始设置 |
⚠️ 顺序陷阱(血的教训)
很多人第一次用 ufw 会这样:
sudo ufw enable # 第一步:启用结果:如果你是通过 SSH 远程操控的,这一下立刻把 SSH 自己也挡在门外,爸爸再也连不进来,必须跑到 Aaron 房间物理操作。
正确顺序:先把 SSH 端口(22)加进白名单,再 enable:
sudo ufw allow 22/tcp # 先保命
sudo ufw allow 19132/udp # 再开 MC 端口
sudo ufw enable # 最后启用Linux 笑话
Aaron 第一次配服务器,爸爸远程教他:
aaron@ubuntu:~$ sudo ufw enable
Firewall is active and enabled on system startup.爸爸的终端突然:Connection closed by 192.168.3.43
Aaron 在 iPad 上看到:「爸爸怎么没消息了?」
爸爸走到 Aaron 房间,看他的屏幕——SSH 也被挡了。 爸爸叹了口气:「这就是为什么有个规矩叫 allow first, enable last。」
记住:防火墙是门卫,但它不认识你。enable 之前,先把自己的钥匙孔告诉它。
例题精讲
📗 初探 Starter — 看看现在的防火墙状态
# 看状态(通常 Ubuntu 默认是 inactive)
sudo ufw status
# Status: inactive
# 看更详细的信息
sudo ufw status verbose📘 应用 User — 给 MC 服务器开门
# 第一步:先保命(SSH 端口)
sudo ufw allow 22/tcp
# 第二步:开 MC 端口(Bedrock 用 UDP,不是 TCP!)
sudo ufw allow 19132/udp # IPv4
sudo ufw allow 19133/udp # IPv6(某些网络需要)
# 第三步:启用防火墙
sudo ufw enable
# 会警告 "Command may disrupt existing ssh connections"
# 因为已经 allow 22 了,放心输入 y
# 第四步:确认三条规则都生效
sudo ufw status
# Status: active
# To Action From
# 22/tcp ALLOW Anywhere
# 19132/udp ALLOW Anywhere
# 19133/udp ALLOW Anywhere📙 管理 Admin — 清理和调试
# 规则改错了怎么办?先看编号
sudo ufw status numbered
# [ 1] 22/tcp ALLOW IN Anywhere
# [ 2] 19132/udp ALLOW IN Anywhere
# 按编号删除第 2 条
sudo ufw delete 2
# 要完全重来?
sudo ufw reset # 清空所有规则
sudo ufw disable # 关闭防火墙
# 调试:怀疑防火墙挡住了请求
sudo ufw disable # 暂时关掉
# ...测试连接...
sudo ufw enable # 测完记得打开端口/协议速查
| 服务 | 端口/协议 | 用途 |
|---|---|---|
| SSH | 22/tcp | 远程终端,永远第一个 allow |
| HTTP | 80/tcp | 普通网站 |
| HTTPS | 443/tcp | 加密网站 |
| MC Bedrock (IPv4) | 19132/udp | Aaron 的服务器 |
| MC Bedrock (IPv6) | 19133/udp | MC 的 IPv6 通道 |
| MC Java | 25565/tcp | Java 版 MC(Aaron 的不是这个) |
TCP vs UDP: TCP 像打电话,双方要”喂?听得到吗?“才开始说话——慢但稳。 UDP 像寄明信片,写了地址就扔出去,不管对方收不收到——快但可能丢包。 Minecraft Bedrock 选 UDP 是为了游戏响应更快。
官方文档参考
man ufw # 完整手册
sudo ufw --help # 快速选项
ufw= Uncomplicated FireWall;默认 deny 一切入站;allow加白名单;enable激活;先开 22 再 enable 是铁律。
节点链接
上游(防火墙前置知识)
下游
- systemctl ← 服务跑起来了,端口开通才能对外服务
- Minecraft-Bedrock-Server ← 综合实战必用
同层
节点版本:v1.0 · 2026-04-20 Tier 4 补充节点——防火墙门卫