Ubuntu默认使用**UFW(Uncomplicated Firewall)**作为前端管理工具,底层依赖iptables。首先需明确当前使用的工具:
sudo ufw status查看UFW状态(若启用会显示“Status: active”);sudo iptables -L -n -v查看底层iptables规则。sudo ufw disable),修改完成后重新启用(sudo ufw enable),避免两者规则叠加冲突。sudo ufw status numbered(显示带行号的规则);sudo iptables -L INPUT -n --line-numbers(查看INPUT链规则及序号)。sudo ufw delete <规则序号>(如sudo ufw delete 2删除第2条规则);sudo iptables -D <链名> <规则序号>(如sudo iptables -D INPUT 3删除INPUT链第3条规则)。-I选项将规则插入到正确位置(如将允许SSH的规则插入到INPUT链顶部:sudo iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT)。sudo iptables-save | sudo tee /etc/iptables/rules.v4)。若系统运行Docker,其自带的iptables规则可能覆盖UFW设置(如Docker映射的端口无法被UFW拦截)。解决方法:
sudo ufw route allow in on docker0;sudo iptables -I DOCKER-USER -j ACCEPT(允许Docker用户链流量);sudo ufw reload、sudo systemctl restart docker。telnet <服务器IP> <端口>或nmap <服务器IP>检查端口是否按预期开放/关闭;sudo journalctl -u ufw(UFW日志)或sudo tail -f /var/log/syslog(系统日志)查看拦截记录,确认冲突是否解决。sudo cp /etc/ufw/user.rules /etc/ufw/user.rules.bak(UFW)、sudo iptables-save > /etc/iptables.rules.v4.bak(iptables);journalctl -xe查看详细系统日志,定位具体错误原因。