本文目录导读:

UFW(Uncomplicated Firewall)确实是 Ubuntu 上简化 iptables 管理的利器,它把复杂的底层规则封装成了简单易懂的命令,非常适合初学者和标准服务器场景。
以下是使用 UFW 简化管理的核心操作和工作流程:
基础操作:开/关/重置
这些是日常管理最常用的命令:
-
启用防火墙(默认规则为拒绝所有入站,允许所有出站):
sudo ufw enable
小贴士:第一次启用时,SSH 端口不是默认的 22,务必 先添加 SSH 规则(见下文),否则会断开连接。
-
禁用防火墙:
sudo ufw disable
-
查看状态和当前规则:
sudo ufw status
如果想看更详细的信息(包括默认策略和规则编号),可以使用:
sudo ufw status verbose
-
重置所有规则(回到初始状态):
sudo ufw reset
这是一个危险的命令,会清空所有配置。
核心操作:允许和拒绝
这是你平时最主要的工作。
-
允许特定端口(最常见):
# 允许 SSH(端口 22) sudo ufw allow ssh # 或者 sudo ufw allow 22 # 允许 HTTP(端口 80) sudo ufw allow http # 或者 sudo ufw allow 80 # 允许 HTTPS(端口 443) sudo ufw allow https # 允许特定端口范围(比如用于游戏服务器) sudo ufw allow 27000:27005/tcp sudo ufw allow 27000:27005/udp
-
拒绝特定端口:
# 拒绝 telnet(端口 23) sudo ufw deny telnet # 或者 sudo ufw deny 23
-
允许特定 IP 访问某一端口:
# 仅有 IP 192.168.1.100 可以 SSH 登录 sudo ufw allow from 192.168.1.100 to any port ssh
-
允许特定网段访问某一端口:
# 局域网 /24 网段可以访问 MySQL(端口 3306) sudo ufw allow from 192.168.1.0/24 to any port 3306
进阶操作:规则管理
当你有很多规则时,直接 allow/deny 会变得混乱,你需要:
-
查看规则编号:
sudo ufw status numbered
输出会像这样:
Status: active To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN Anywhere [ 2] 80/tcp ALLOW IN Anywhere [ 3] 443/tcp ALLOW IN Anywhere [ 4] 3306/tcp ALLOW IN 192.168.1.0/24 -
删除指定规则(通过编号):
# 删除编号为 4 的规则(允许 MySQL 的规则) sudo ufw delete 4
-
通过规则内容删除:
# 直接删除 "允许 80 端口" 这条规则 sudo ufw delete allow 80
日志和故障排查
-
查看日志:
sudo ufw logging on
日志会被写入
/var/log/ufw.log,当你怀疑某个连接被防火墙误阻时,可以tail -f /var/log/ufw.log实时查看。 -
检查是否支持 IPv6:
sudo ufw status | grep -i ipv6
如果没有输出,可能需要编辑
/etc/default/ufw文件,确保IPV6=yes。 -
查看默认策略:
sudo ufw status verbose
输出开头会显示
Default: deny (incoming), allow (outgoing), disabled (routed),这代表:- 入站:默认拒绝(任何未明确
allow的连接都会被阻止)。 - 出站:默认允许(你的服务器可以主动连接外网)。
- 转发:默认关闭(不适合做路由器)。*
- 入站:默认拒绝(任何未明确
工作流程建议
-
初始设置:
sudo ufw default deny incoming # 确保默认拒绝入站 sudo ufw default allow outgoing # 确保默认允许出站
-
添加核心服务(务必先做这一步,特别是 SSH):
sudo ufw allow ssh # 或者你的自定义 SSH 端口 sudo ufw allow http sudo ufw allow https
-
启用防火墙:
sudo ufw enable
-
验证状态:
sudo ufw status verbose
-
日常添加/删除:重复第 2 步中的
allow/deny命令。
为什么 UFW 让管理简单?
- 无需记忆 iptables 语法:你只需记住
allow、deny、port、from这几个关键词。 - 规则编号化:方便精确增删,不用去改复杂的 iptables 文件。
- 自动处理底层:UFW 会自动帮你把规则翻译成 iptables 命令,并确保内核网络过滤规则生效。
- 日志友好:通过
ufw.log可以很直观地看到被拒绝的流量。
你基本可以告别 iptables 那成堆的 -A INPUT、-j ACCEPT 参数了。