LHIDC

DDoS流量清洗后ping异常,怎样判断是策略拦截还是链路故障

面向运维工程师,说明清洗启用后ping不稳定时的排查顺序:先确认ICMP策略限制,再对比业务端口与日志,结合最小放行、审计和回滚验证区分策略拦截与真实链路故障。

DDoS流量清洗后ping异常,怎样判断是策略拦截还是链路故障

清洗启用后先别急着判定“网络坏了”

攻击一来,DDoS流量清洗一接入,监控里的 ping 开始抖动,甚至直接超时,这是很常见的现场现象。但ping异常本身不能直接等于链路故障。在多数情况下,先要怀疑的是:清洗策略、边界ACL、主机防火墙,或者上游设备对 ICMP 做了限速、丢弃或优先级降低。

判断顺序建议固定下来:先确认 ICMP 是否被安全策略限制,再对比业务端口访问结果,最后才把重点转向链路故障。这个结论成立的前提是:你使用的是同一时间段、同一探测源、同一目标地址做对比。否则很容易把源地址差异、运营商路径差异误判成网络故障。

现有暴露:哪些现象更像策略拦截,哪些更像链路故障

先把故障现象分层,不要只盯着一个 ping 图表。

现象 更像策略拦截 更像链路故障 说明
ping 全部超时,但 80/443 正常可访问 很多清洗策略会直接限制 ICMP,不影响业务端口
ping 间歇性丢包,但网页、API、SSH 握手正常 可能性较低 ICMP 被限速时最常见
ping 和 443 同时超时,TCP 握手也失败 更像链路、路由、上游转发异常
只有某个源地址 ping 不通,其他探测点正常 可能性较低 可能命中地域、信誉、ACL、黑白名单策略
清洗策略刚变更后立刻出现异常 需要排后 先查变更,再查链路
小包 ping 正常,大包或上传请求异常 可能是 MTU/PMTU 或链路中间设备处理异常

一个实用判断是:如果业务端口可达、应用日志正常、客户端可以完成 TCP/HTTPS 请求,而只有 ping 失败,那么优先查策略拦截,不要先开工查全网链路。 反过来,如果 pingcurlncTest-NetConnection 都一起异常,才值得把重点放到链路、路由回程、运营商路径或 MTU 上。

防护动作:先保业务,不把关闭防护当默认修复方案

清洗后的首要目标不是“让 ping 绿起来”,而是保证业务端口连续可用。因此处置顺序要稳:

  • 先冻结当前变更,记录策略调整时间点
  • 保留业务必需端口的最小放行
  • 保留清洗平台、边界防火墙、主机防火墙的审计日志
  • 如果监控必须依赖 ICMP,只给监控源做限速放行,不要全量放开
  • 不把“关闭防护”作为默认修复动作,除非已经有充分证据证明策略误杀且有临时补偿措施

这里有个常见误区: 很多监控系统把 ping 失败直接标记为主机不可达,但对启用了 DDoS流量清洗 的业务来说,这个结论并不完整。 更可靠的做法是同时监控:

  • ICMP 连通性
  • TCP 端口连通性
  • HTTP/HTTPS 应用探测
  • 安全设备命中日志
  • 服务端实际访问日志

配置核对:先确认 ICMP 是否被安全策略限制

从四个位置检查 ICMP

建议按下面四层去看,避免漏查:

  1. 清洗策略本身
    • 是否对 ICMP 做了丢弃、限速、清洗优先级降低
    • 是否启用了异常协议包过滤
    • 是否存在源地址、地域、信誉库限制
  2. 边界防火墙或ACL
    • 是否放行业务端口但拒绝 ICMP
    • 是否只允许特定监控源 ping
  3. 主机防火墙
    • Linux 的 nftablesiptablesfirewalld
    • Windows 防火墙入站 ICMP 规则
  4. 主机系统参数
    • 是否关闭了 ICMP 回应
    • 是否仅对部分协议族响应,例如 IPv4 正常、IPv6 异常

Linux 上先做只读检查

先不要改规则,先看现状。以下命令以常见 Linux 环境为例,执行前请确认系统实际使用的是 nftablesiptables 还是 firewalld

sysctl net.ipv4.icmp_echo_ignore_all
sysctl net.ipv4.icmp_echo_ignore_broadcasts
sudo nft list ruleset
sudo iptables -S
sudo firewall-cmd --list-all

如果系统参数里 net.ipv4.icmp_echo_ignore_all = 1,说明主机本身就不会回应 ping。

再抓包确认数据包到底有没有到主机:

sudo tcpdump -ni any 'icmp or tcp port 80 or tcp port 443'

抓包结果的判断很关键:

  • 能看到 echo-request 到达,但没有 echo-reply 发出 多半是主机策略或系统参数问题
  • 看不到 ICMP,但能看到 443 的 SYN/ACK 正常往返 多半是上游策略只限制了 ICMP
  • ICMP 和业务 SYN 都看不到 重点转向上游转发、路由或更前面的安全策略
  • 主机已经回包,但外部仍显示超时 可能是回程路径、上游过滤或链路不对称问题

Windows 环境重点看防火墙规则

如果目标是 Windows 服务器,优先检查是否启用了 ICMP 回显相关规则,并使用端口探测做对比:

Test-NetConnection -ComputerName <目标IP> -Port 443

若 443 连通但 ping 失败,仍然更像策略限制而不是链路中断。

用业务端口对比,别让 ping 一票否决业务状态

这是区分 策略拦截链路故障 最有效的一步。 请从同一个外部探测点,对同一目标同时做 ICMP 和业务端口测试。

常用对比方法

HTTP/HTTPS 业务可以先这样测:

curl -I --connect-timeout 3 https://<域名或IP>
nc -vz <目标IP> 443

如果是 Linux,可进一步用 TCP 模式的路径探测和 ICMP 模式对比:

mtr --report --tcp --port 443 <目标IP>
mtr --report --icmp <目标IP>

判断逻辑如下:

  • ICMP 丢包高,但 TCP 到最终目标稳定
    • 不要立刻判定链路坏
    • 很多中间设备会降级处理 ICMP
    • 更像策略拦截或 ICMP 优先级低
  • ICMP 和 TCP 到最终目标都一起抖动
    • 更像真实链路问题
    • 可能涉及路由收敛、清洗回注路径、运营商转发、回程异常
  • ping 不通,但 curl 可返回 200/301/401,应用日志也有请求
    • 基本可以先把“服务器宕机”排除
    • 先查安全策略

一个容易误判的边界:MTU 问题

有时 ping 小包能通,但 HTTPS 上传、长连接或大响应异常,这不一定是清洗策略,也不一定是业务程序问题,可能是 PMTU 相关 ICMP 被阻断。

在 Linux 上可以做非分片探测:

ping -M do -s 1472 <目标IP>

如果大包明显异常,而业务也表现为上传卡顿、TLS 建连后数据传输失败,就要检查:

  • 路径 MTU 是否变化
  • 是否拦截了 fragmentation-needed / packet-too-big
  • 清洗回注路径是否改变了实际链路

回滚时只回滚最近变更,不整套关闭防护

如果你已经基本确认问题出在策略,不建议一步退回“全关防护”。更稳妥的做法是回滚单一变量

推荐顺序:

  1. 先备份当前规则或记录当前策略版本
  2. 只回滚最近新增的 ICMP 限速、黑名单、ACL 条目
  3. 保留业务端口防护不动
  4. 每回滚一项,就用同一组探测再次验证
  5. 记录恢复前后差异,避免误把短时网络波动当成修复结果

如果本地是 nftables,修改前先导出规则:

sudo nft list ruleset > nft-backup-$(date +%F-%H%M%S).conf

如果需要保留最小放行,思路应是:

  • 业务端口按需放行
  • ICMP 不全开,只放必要类型或只对白名单监控源开放
  • 拒绝规则保留日志,但要控制日志量,避免再次放大压力

一个偏安全的最小放行思路如下,示例仅用于核对方向,应用前请先适配现网规则:

table inet filter {
  chain input {
    type filter hook input priority 0;
    ct state established,related accept
    tcp dport { 80, 443 } accept
    ip protocol icmp icmp type echo-request limit rate 10/second burst 20 packets accept
    ip protocol icmp icmp type { destination-unreachable, time-exceeded, parameter-problem } accept
    counter log prefix "drop_input " level info drop
  }
}

如果是 IPv6,不能简单照搬 IPv4 处理方式。IPv6 对 ICMPv6 依赖更强,相关必要报文不应一刀切阻断。

复查时重点看“最小放行”和“审计是否够用”

当你把策略调到业务恢复、监控可用之后,还要再做一次复查。重点不是把规则越放越宽,而是确认最小放行是否满足监控和业务

建议保留以下两类配置:

最小放行建议

  • 业务必要端口继续放行
  • ICMP 仅按用途开放
    • 给监控源开放 echo-request
    • 保留必要的不可达、超时、参数问题报文
  • 不因一次排障把所有协议都改成全放行

审计建议

至少应能看到这些信息:

  • 命中的规则编号或策略名称
  • 源 IP、目的 IP、协议、端口
  • 命中时间
  • 动作是丢弃、限速还是挑战
  • 同时间段业务访问是否正常

如果日志量过大,建议做采样或聚合,不要让审计本身成为新的负担。

加固后怎么验证才算真的修好

修复后不要只看一次 ping。建议连续做三类验证:

  1. ICMP 验证
    • 确认监控源是否恢复可见
    • 确认是否仍有异常高丢包
  2. 业务端口验证
    • curlncTest-NetConnection 持续正常
    • 应用日志中请求持续进入
    • 没有明显握手超时或重传激增
  3. 安全与链路联合观察
    • 清洗日志是否仍在命中 ICMP 规则
    • 路径探测在 TCP 模式下是否稳定
    • 网卡错误、系统连接数、应用超时是否同步回落

如果最终表现是:ping 仍然受限,但业务端口稳定、应用正常、日志可解释,这通常就是一个可接受的安全优化状态。 真正需要继续追链路的,是那些ICMP 与业务端口同时异常、抓包也看不到正常业务往返的情况。此时再把抓包、路径探测、变更时间线一起提交给网络侧处理,效率会高得多。

上一篇 日本名古屋云服务器和大阪云服务器面向关西用户,延迟与交付如何比较 下一篇 linux磁盘IO性能测试应看哪些指标,避免只盯吞吐量

LHIDC 产品中心

继续查看可购买的海外服务器产品

文章用于辅助选型,最终价格、库存与配置请以产品详情页和下单页面展示为准。

查看产品 查看方案