问题描述

业务接入DDoS高防后,用户访问业务时存在异常卡顿、延迟较大、丢包等现象。

可能原因

遇到这类问题时,建议您收集受影响的访问源IP,并通过Traceroute信息或MTR命令等工具进行链路测试,判断问题来源。

可能原因 分析方法 解决方法
后端服务器异常 排查源站服务器的CPU、内存、带宽等是否有异常。 提交ECS工单说明情况。
DDoS高防实例有清洗事件 按照下文指导进行TCP ping测试。 提交工单说明情况,需提供相关数据。
DDoS高防实例有黑洞事件 分析黑洞的影响情况。 使用黑洞解封。

后端服务器异常分析与处理

您需要根据源站服务器的类型,选择对应的排查步骤。

源站类型 排查步骤
源站是负载均衡SLB
  1. 针对负载均衡IP和端口,运行tcping工具,查看记录是否有异常。
  2. 查看负载均衡服务器状态(例如连接数情况、后端服务器)是否有异常。
  3. 查看负载均衡是否设置了黑、白名单,或者其他的访问控制策略。

    如有,请确认已经放行了DDoS高防的回源IP网段。更多信息,请参见放行DDoS高防回源IP

  4. 查看负载均衡后端的ECS,确认是否有安全软件或其他IP封禁策略误拦截了DDoS高防的回源IP。

    如有,请确认已经放行了DDoS高防的回源IP网段。更多信息,请参见放行DDoS高防回源IP

    说明 配置负载均衡后,后端服务器无法识别访问者的真实源IP。如果有安全软件进行恶意IP识别并阻断,则可能会误拦截高防集群本身的回源IP,而此类IP都需要放行。
  5. 查看负载均衡IP是否暴露。
源站是云服务器ECS
  1. 针对服务器IP和端口,运行tcping工具,查看记录是否有异常。
  2. 查看后端服务器是否有异常事件,例如服务器本身黑洞及清洗事件、CPU高、数据库请求慢、出方向带宽满等。
  3. 查看服务器本身是否设置了黑、白名单,或者其他的访问控制策略。

    如有,请确认已经放行了DDoS高防的回源IP网段。更多信息,请参见放行DDoS高防回源IP

  4. 查看ECS服务器,确认是否有安全软件或其他IP封禁策略误拦截了DDoS高防的回源IP。

    如有,请确认已经放行了DDoS高防的回源IP网段。更多信息,请参见放行DDoS高防回源IP

  5. 查看服务器IP是否暴露。

    如有,建议您更换源站ECS IP。更多信息,请参见更换源站ECS公网IP

源站是非阿里云服务器
  1. 针对服务器IP和端口,运行tcping工具,查看记录是否有异常。
  2. 查看服务器是否有异常事件,例如CPU高、数据库请求慢、出方向带宽满等。
  3. 查看服务器本身是否设置了黑、白名单,或者其他的访问控制策略。

    如有,请确认已经放行了DDoS高防的回源IP网段。更多信息,请参见放行DDoS高防回源IP

  4. 查看服务器,确认是否有安全软件或其他IP封禁策略误拦截了DDoS高防的回源IP。

    如有,请确认已经放行了DDoS高防的回源IP网段。更多信息,请参见放行DDoS高防回源IP

    说明 非阿里云服务器一般都无法识别访问者的真实源IP,如果有安全软件进行恶意IP识别并阻断,则可能会误拦截高防集群本身的回源IP,而此类IP都需要放行。
  5. 查看服务器IP是否暴露。
    说明 配置DDoS高防服务后,建议您更换后端源站服务器IP,不要使用之前已暴露的IP。

如果您使用的是阿里云产品,发现异常后需要售后技术支持团队协助进行排查,请提交相关云产品的工单说明情况。

DDoS高防实例清洗事件分析与处理

您可以在DDoS高防控制台实例管理页面查看高防实例的状态

实例状态
如果实例的状态是清洗中,则表示DDoS高防实例有清洗事件,且异常可能是清洗事件引起的,建议您参照以下步骤进一步分析和解决问题:
  1. 针对受攻击端口,运行tcping工具查看并记录是否有延迟和丢包。
  2. 针对未被攻击端口,运行tcping工具查看并记录是否有延迟和丢包。
根据记录结果,对照下表查看问题原因。
受攻击端口

有延时、丢包

未被攻击端口

有延时、丢包

问题原因分析
说明不是清洗策略的原因,清洗策略未导致误杀。

建议您查看后端服务器状态是否异常,确认后端服务器的抗攻击性能。若服务器抗攻击能力较弱,则需要收紧防御策略。建议您提交工单说明情况,申请售后技术支持团队来协助您处理。

若需要收紧防御策略,您需要提供服务器抗攻击能力的详细参数,包括:
  • 正常用户访问情况
  • 业务主要交互过程
  • 应用对外服务能力
清洗策略误杀导致。

请提交工单,需要由售后技术支持团队进行后端排查。

说明不是清洗策略的原因,清洗策略未导致误杀。
一般不存在这种情况。

DDoS高防实例黑洞事件分析与处理

您可以在DDoS高防控制台实例管理页面查看高防实例的状态

实例状态-黑洞中

如果实例的状态是黑洞中,则表示DDoS高防实例有黑洞事件,请确认进入黑洞的DDoS高防实例的IP,以及受影响访问是否都经过该IP。

建议您使用DDoS高防的黑洞解封功能,解除黑洞状态。每个阿里云账号每天共拥有五次黑洞解封机会。更多信息,请参见黑洞解封

其他情况反馈

如果上述方案都不能帮助您解决问题,建议您提交工单联系售后技术支持团队。为便技术支持团队快速判断及分析问题,请在工单内提供以下访问情况信息。
地域 受影响的访问源IP 被访问的高防实例的IP Ping信息 traceroute或mtr信息 tcping或端口连接信息
中国内地或非中国内地 例如:1.xx.xx.1 例如:203.xx.xx.168 提供连续且大于10次ping请求的结果。 提供从此访问源IP至被访问高防实例IP的tracert或traceroute信息。 提供连续且大于10次的tcpping或端口连接信息。
您也可以在工单中补充以下信息,方便售后技术支持团队快速定位问题:
  • DDoS高防域名配置中的源站地址类型,例如负载均衡、云服务器ECS、非阿里云服务器。
  • 源站地址以及负载均衡、云服务器ECS或非云阿里云服务器的日志,例如CPU、内存、带宽、连接数等数据。
  • 源站是否存在访问控制策略。
  • 源站是否有安装了安全软件,例如云锁、360、安全狗、自带iptables等。
  • 源站是否有安全策略,例如针对IP级别的检测及过滤。
  • DDoS高防实例是否有清洗及黑洞事件。
  • 业务类型,例如网站、端游、页游、App等。
  • 问题出现时间,是否有其他涉及更改、删除DDoS高防实例的操作。

常用检查工具介绍

Traceroute命令行工具

Traceroute是Linux预装的网络测试工具,用于跟踪Internet 协议(IP)数据包传送到目标地址时经过的路径。

Traceroute会发送具有最大存活时间值(Max_TTL)的UDP探测数据包,然后侦听从网关开始的整个链路上的ICMP TIME_EXCEEDED响应。探测从TTL=1开始,TTL值逐步增加,直至接收到ICMP PORT_UNREACHABLE消息。ICMP PORT_UNREACHABLE消息用于标识目标主机已经被定位,或命令已经达到允许跟踪的最大TTL值。
说明 Traceroute默认发送UDP数据包进行链路探测。您可以使用-I参数来指定发送ICMP数据包用于探测。
示例
[root@centos ~]# traceroute -I 223.5.5.5
traceroute to 223.5.5.5 (223.5.5.5), 30 hops max, 60 byte packets
 1  * * *
 2  192.168.17.20 (192.168.17.20)  3.965 ms  4.252 ms  4.531 ms
 3  111.1.20.41 (111.1.20.41)  6.109 ms  6.574 ms  6.996 ms
 4  111.1.34.197 (111.1.34.197)  2.407 ms  2.451 ms  2.533 ms
 5  211.138.114.25 (211.138.114.25)  1.321 ms  1.285 ms  1.304 ms
 6  211.138.114.70 (211.138.114.70)  2.417 ms 211.138.114.66 (211.138.114.66)  1.857 ms 211.138.114.70 (211.138.114.70)  2.002 ms
 7  42.120.244.194 (42.120.244.194)  2.570 ms  2.536 ms 42.120.244.186 (42.120.244.186)  1.585 ms
 8  42.120.244.246 (42.120.244.246)  2.706 ms  2.666 ms  2.437 ms
 9  * * *
10  public1.alidns.com (223.5.5.5)  2.817 ms  2.676 ms  2.401 ms
				

更多关于Traceroute命令行工具的信息,请参见链路测试工具使用及介绍

TRACERT命令行工具

TRACERT (Trace Route) 是Windows自带的网络诊断命令行实用程序,用于跟踪Internet协议(IP)数据包传送到目标地址时经过的路径。

TRACERT通过向目标地址发送ICMP数据包来确定到目标地址的路由。在这些数据包中,TRACERT使用不同的IP “生存期”(TTL)。由于要求沿途的路由器在转发数据包前至少必须将TTL减少 1,因此TTL实际上相当于一个跃点计数器(hop counter)。当某个数据包的TTL达到零时,相应节点就会向源计算机发送一个ICMP“超时”消息。

TRACERT第一次发送TTL为1的数据包,并在每次后续传输时将TTL增加1,直到目标地址响应或达到TTL的最大值。中间路由器发送回来的ICMP“超时”消息中包含了相应节点的信息。

示例
C:\> tracert -d 223.5.5.5
通过最多30个跃点跟踪到223.5.5.5的路由。

  1     *        *        *     请求超时。
  2     9 ms     3 ms    12 ms  192.168.17.20
  3     4 ms     9 ms     2 ms  111.1.20.41
  4     9 ms     2 ms     1 ms  111.1.34.197
  5    11 ms     *        *     211.140.0.57
  6     3 ms     2 ms     2 ms  211.138.114.62
  7     2 ms     2 ms     1 ms  42.120.244.190
  8    32 ms     4 ms     3 ms  42.120.244.238
  9     *        *        *     请求超时。
 10     3 ms     2 ms     2 ms  223.5.5.5

跟踪完成。
				

更多关于TRACERT命令行工具的信息,请参见链路测试工具使用及介绍

TCPing工具

TCPing工具使用TCP的方式去查看端口情况,可以检测出TCP延迟及连接情况。您可以单击下载TCPing工具
  • Windows使用方法

    将TCPing工具拷贝至Windows指定目录,在命令提示行中运行tcping <domain name> 80

    示例
    C:\>tcping.exe www.aliyun.com 80
    
    Probing 140.205.62.8:80/tcp - Port is open - time=19.550ms
    Probing 140.205.62.8:80/tcp - Port is open - time=8.761ms
    Probing 140.205.62.8:80/tcp - Port is open - time=10.899ms
    Probing 140.205.62.8:80/tcp - Port is open - time=13.013ms
    
    Ping statistics for 140.205.62.8:80
         4 probes sent.
         4 successful, 0 failed.
    Approximate trip times in milli-seconds:
         Minimum = 8.761ms, Maximum = 19.550ms, Average = 13.056ms
    							
  • Linux使用方法
    运行以下命令,安装tcping工具。
    tar zxvf tcping-1.3.5.tar.gz
    cd tcping-1.3.5
    make tcping.linux
    							
    示例
    [root@aliyun tcping-1.3.5]# for ((i=0; i<10; ++i)) ; do ./tcping  www.aliyun.com 80;done
    www.aliyun.com port 80 open.
    www.aliyun.com port 80 open.
    www.aliyun.com port 80 open.
    www.aliyun.com port 80 open.
    www.aliyun.com port 80 open.
    www.aliyun.com port 80 open.
    www.aliyun.com port 80 open.
    www.aliyun.com port 80 open.
    www.aliyun.com port 80 open.
    www.aliyun.com port 80 open.