Ubuntu防火墙开启后无法连接网络怎么办
小樊
42
2025-12-10 18:16:00
Ubuntu防火墙开启后无法连接网络的排查与修复
一、快速定位问题
- 确认防火墙状态与默认策略:执行sudo ufw status verbose。若看到Default: deny (incoming), allow (outgoing),说明默认只允许本机主动出站,未放行的入站连接会被拒绝(常见现象是能上网但端口连不上)。若你之前执行过sudo ufw default deny或deny (routed),可能影响转发与路由。
- 做一次最小化连通性自检:
- 查看地址与路由:ip a、ip route(确认有有效IP与默认网关)。
- 分层测试:先 ping 默认网关(如192.168.1.1),再 ping 外网 IP(如8.8.8.8),最后测试域名(如ping google.com)。能 ping IP 但域名失败,多为 DNS 问题。
- 检查 DNS:cat /etc/resolv.conf,若缺少 DNS,可临时写入nameserver 8.8.8.8与nameserver 8.8.4.4再测。
- 判断是否为防火墙阻断:执行sudo ufw disable临时关闭防火墙验证;若恢复,说明是规则问题,需按下方步骤放行必要流量。
二、按场景修复
- 场景A 能上网但端口连不上(如 SSH、Web)
- 放行对应端口与协议(示例):sudo ufw allow 22/tcp、sudo ufw allow 80/tcp、sudo ufw allow 443/tcp;若需 UDP 则改为**/udp**。
- 指定来源网段更稳妥:sudo ufw allow from 192.168.1.0/24 to any port 22。
- 查看与确认:sudo ufw status numbered,必要时sudo ufw reload使规则生效。
- 场景B 完全无网络(连外网都不通)
- 检查默认策略是否为deny (outgoing)(少见但可能):执行sudo ufw default allow outgoing恢复出站默认放行,再sudo ufw reload。
- 若你使用 netplan(常见路径:/etc/netplan/*.yaml),在应用防火墙规则后执行sudo netplan apply确保网络栈与规则一致。
- 场景C 虚拟机环境(VMware/VirtualBox)
- 优先使用NAT模式(可自动获取 IP),确认虚拟机网络适配器已启用;若需与宿主机同网段再用桥接。
- 虚拟机里同样用sudo ufw status检查防火墙;必要时在宿主机与虚拟机两侧分别排查防火墙规则。
三、常用命令速查
- 防火墙状态与规则
- 查看:sudo ufw status verbose、sudo ufw status numbered
- 启停与重载:sudo ufw enable、sudo ufw disable、sudo ufw reload
- 放行示例:sudo ufw allow 22/tcp、sudo ufw allow from 192.168.1.100 to any port 8080
- 底层规则查看(当 ufw 不够细时)
- sudo iptables -L -n -v、sudo iptables -S
- 网络与连通性
- 地址/路由:ip a、ip route
- 连通性:ping 网关IP、ping 8.8.8.8、ping 域名
- DNS 快速修复
- 写入:echo “nameserver 8.8.8.8” | sudo tee /etc/resolv.conf(临时)
- netplan 应用
- sudo netplan apply(修改网络或防火墙后建议执行一次)
四、安全加固建议
- 保持默认策略为deny (incoming), allow (outgoing),仅对必需端口与来源放行(如仅开放22/80/443给指定网段)。
- 避免使用过于宽松的规则(例如sudo ufw default allow),这会显著降低安全性。
- 规则变更后用sudo ufw status numbered核对,必要时sudo ufw reload;对关键业务可先规划规则顺序与来源限制。