Debian 防火墙连接问题排查与修复
一、快速判断与最小验证
sudo ufw status verbose,若显示 Status: active,说明防火墙已启用。sudo nft list ruleset,若能看到规则,说明在使用 nftables。sudo systemctl is-active firewalld,返回 active 表示正在运行。sudo ufw allow 22/tcpsudo nft add rule ip filter input tcp dport 22 acceptsudo firewall-cmd --add-port=22/tcp --permanent && sudo firewall-cmd --reloadss -tulpen | grep :<端口>,若看到 127.0.0.1:<端口> 或 ::1:<端口>,说明仅本地监听;远程访问需要 0.0.0.0:<端口>(或 *:端口)。nc -vz <服务器IP> <端口> 或 telnet <服务器IP> <端口>;也可用 nmap -p <端口> <服务器IP>。二、按工具定位与修复
sudo ufw status verbose、sudo ufw status numbered(便于按编号删除冲突规则)。sudo ufw allow <端口>/tcp;删除规则:sudo ufw delete <编号> 或 sudo ufw delete allow <端口>/tcp。sudo ufw logging on,日志路径 /var/log/ufw.log。sudo apt update && sudo apt install ufw。sudo nft list ruleset。sudo nft add rule ip filter input tcp dport <端口> accept(IPv6 用 ip6 家族)。sudo nft -f /etc/nftables.conf 加载。sudo firewall-cmd --state、sudo firewall-cmd --list-ports、sudo firewall-cmd --add-port=<端口>/tcp --permanent && sudo firewall-cmd --reload。三、服务监听与中间环节检查
ss -tulpen | grep :<端口> 确认监听地址为 0.0.0.0(或 *:端口),而非仅 127.0.0.1。bind-address=127.0.0.1,需改为 0.0.0.0 并授权远程用户。protected-mode yes,远程连不上可先临时关闭测试。bindIp: 127.0.0.1,需改为 0.0.0.0 或加入内网 IP。getenforce 查看,必要时 setenforce 0 做临时排除测试。四、常见错误与修复清单
sudo ufw status numbered 查看并按编号调整/删除;nftables 用 list ruleset 检查优先级与覆盖关系。sudo iptables-save > /etc/iptables/rules.v4,并在启动时恢复;sudo systemctl status firewalld ufw iptables,只保留一种并在重启后验证规则是否按预期加载。sudo ufw allow 22/tcp 再 sudo ufw enable,避免被断开。五、最小化临时放行与回滚方案
sudo ufw allow <端口>/tcpsudo nft add rule ip filter input tcp dport <端口> acceptsudo firewall-cmd --add-port=<端口>/tcp --permanent && sudo firewall-cmd --reloadecho "y" | sudo ufw resetsudo nft flush rulesetsudo firewall-cmd --complete-reload(或 sudo systemctl restart firewalld)