温馨提示×

debian防火墙怎么故障排除

小樊
32
2025-12-23 00:57:46
栏目: 智能运维

Debian 防火墙故障排除步骤

一 快速定位思路

  • 明确使用的防火墙工具:Debian 常见为 UFW 或直接使用 iptables;若系统曾使用 firewalld,也需一并确认其状态。
  • 按链路逐段验证:先看本机是否监听端口,再看本机防火墙是否放行,最后看外部网络与云侧是否放行(如安全组/NACL)。
  • 使用“由内到外”的连通性测试:本机回环与本地扫描 → 同网段主机测试 → 外部公网/云安全组测试。

二 工具与命令速查

  • 查看防火墙状态与规则
    • UFW:sudo ufw status verbose;需要编号规则时用 sudo ufw status numbered
    • iptables:sudo iptables -L -n -v(加 -v 可看到包计数,便于判断是否命中)
    • firewalld:sudo systemctl status firewalld;规则概览 sudo firewall-cmd --list-all
  • 应用与验证
    • 开放端口:UFW 示例 sudo ufw allow 22/tcp;iptables 示例 sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    • 本机监听:ss -tulpen | grep <端口>netstat -tulpen | grep <端口>
    • 端口连通性:本地 nmap -sT -p <端口> 127.0.0.1;远程 nmap -p <端口> <服务器公网IP>
  • 日志与抓包
    • UFW 日志:sudo ufw logging on,日志路径 /var/log/ufw.log
    • 抓包定位:sudo tcpdump -ni any 'tcp port <端口>'(看是否有 SYN 到达本机)

三 常见场景与处理

  • 场景A SSH 连不上
    • 确认服务监听:ss -lntp | grep :22
    • 放行端口:sudo ufw allow 22/tcpsudo iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT
    • 云服务器:在云平台控制台安全组放行 TCP/22
    • 验证:ssh -v <服务器IP>;必要时在服务器上 sudo tcpdump -ni any 'tcp port 22'
  • 场景B 网站/应用端口访问超时
    • 监听与协议:ss -lntp | grep :80:443
    • 放行端口:sudo ufw allow 80,443/tcp 或相应 iptables 规则
    • 云侧安全组/NACL:放行对应 TCP/80、TCP/443
    • 外部探测:nmap -p 80,443 <服务器IP>;若本机能访问而外部不能,优先检查云安全组与运营商/边界设备策略
  • 场景C UFW 启用失败或提示可能中断 SSH
    • 先放行 SSH 再启用:sudo ufw allow 22/tcpsudo ufw enable
    • 已有规则冲突:用 sudo ufw status numbered 查看并按编号删除/调整冲突规则
  • 场景D 规则变更未生效
    • UFW:sudo ufw reload
    • iptables:规则是即时生效的;若重启后丢失,需保存并在启动时恢复(见下节)
  • 场景E Docker 端口访问不到
    • 启动容器时映射端口:-p 80:80(宿主机端口:容器端口)
    • 确认宿主机监听:ss -lntp | grep :80
    • 若使用 UFW,注意 Docker 可能绕过或改写 filter 表规则;必要时改用 iptables 显式放行或调整策略顺序

四 规则保存与持久化

  • UFW
    • 启用即持久化;修改后用 sudo ufw reload
    • 日志:sudo ufw logging on,查看 /var/log/ufw.log
  • iptables
    • 保存当前规则:sudo iptables-save > /etc/iptables/rules.v4
    • 开机恢复(Debian 常用做法):创建 /etc/network/if-pre-up.d/iptables
      #!/bin/sh
      /sbin/iptables-restore < /etc/iptables/rules.v4
      
      赋权:sudo chmod +x /etc/network/if-pre-up.d/iptables
    • 如需清空规则做验证:sudo iptables -F && sudo iptables -X && sudo iptables -t nat -F && sudo iptables -t nat -X(测试完再按上法恢复)

五 最小化验证与回退方案

  • 最小化连通性验证
    • 本机:ss -lntp | grep <端口>nmap -sT -p <端口> 127.0.0.1
    • 外部:nmap -p <端口> <服务器IP>;若外部不通而本机通,多为外部策略(云安全组/防火墙/路由)问题
  • 临时回退(排障用,验证后请恢复策略)
    • UFW:sudo ufw disable
    • iptables:设置默认放行 sudo iptables -P INPUT ACCEPT && sudo iptables -P FORWARD ACCEPT && sudo iptables -P OUTPUT ACCEPT,并清空规则 sudo iptables -F
    • 云侧:临时放开安全组对应端口后再逐项收紧

0