Ubuntu 防火墙故障排查步骤
一 明确防火墙栈与最小检查
sudo ufw status verbose 或 sudo ufw status numbered,确认状态为 active,并检查目标端口是否有 ALLOW IN 规则。sudo firewall-cmd --state 查看是否 running;用 sudo firewall-cmd --list-ports 与 sudo firewall-cmd --list-all 查看开放端口与区域配置。sudo iptables -L -n -v 与 sudo iptables -S 查看当前生效规则与策略。sudo systemctl status ufw 或 sudo systemctl status firewalld 确认服务是否运行。二 分层连通性定位
ping <IP>;若不通,优先检查路由、云安全组/本机安全策略、网线/交换与上游网络。sudo ss -tulpen | grep <端口>,看是否存在对应 LISTEN 状态及正确的 PID/程序。curl -Iv http://127.0.0.1:<端口> 或 nc -vz 127.0.0.1 <端口>,验证应用本身是否可达。nmap -sT -p <端口> <服务器IP> 查看端口状态(open/filtered/closed)。三 防火墙规则核对与修正
sudo ufw status verbose / sudo ufw status numbered;sudo ufw allow <端口>/tcp(或 /udp,或 sudo ufw allow 22,80,443/tcp 批量放行);sudo ufw allow from <IP/网段> to any port <端口>;sudo ufw delete allow <端口>/tcp 或用编号删除 sudo ufw delete <编号>;sudo firewall-cmd --state、sudo firewall-cmd --list-ports、sudo firewall-cmd --list-all;sudo firewall-cmd --add-port=<端口>/tcp;永久 sudo firewall-cmd --permanent --add-port=<端口>/tcp 后 sudo firewall-cmd --reload;sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="<IP/网段>" port port="<端口>" protocol="tcp" accept',再 sudo firewall-cmd --reload;--permanent 或未 reload 是常见疏漏。sudo iptables -L -n -v、sudo iptables -S;sudo iptables -A INPUT -p tcp --dport <端口> -j ACCEPT(注意规则顺序与策略默认动作);sudo iptables -A INPUT -p tcp -s <IP/网段> --dport <端口> -j ACCEPT;sudo netfilter-persistent save 或相应保存命令。四 日志与抓包确认拦截点
sudo tail -f /var/log/syslog | grep -i "UFW\|iptables\|DROP" 实时观察;sudo journalctl -u firewalld -f 查看服务日志;如需记录被拒绝的数据包,可在 /etc/firewalld/firewalld.conf 中设置 LogDenied=all 并重启 firewalld。sudo iptables -N LOGGING;sudo iptables -A INPUT -j LOGGING;sudo iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4;sudo iptables -A LOGGING -j DROP;/var/log/syslog 或 /var/log/kern.log 中检索 IPTables-Dropped 前缀,统计高频源 IP 与端口。sudo tcpdump -ni any "tcp port <端口>",从结果判断是未到达本机(可能被上游拦截)、到达但未握手(可能被本机防火墙/服务策略拒绝)、还是握手后被应用关闭。五 常见症状快速处置
sudo firewall-cmd --reload 使永久规则生效;ss -lntp | grep <端口> 确认服务确实在该端口监听;nmap 复核端口状态。