服务器ping丢包或不通时链路测试说明

当客户端访问目标服务器出现 ping 丢包或 ping 不通时,可以通过mtr工具进行链路测试来判断问题来源。本文先介绍了进行链路测试的相关工具,然后对测试结果分析及测试步骤进行了说明。

Linux 环境下链路测试工具介绍

mtr (My traceroute)也是几乎所有 Linux 发行版本预装的网络测试工具。他把 ping和 traceroute 的功能并入了同一个工具中,所以功能更强大。mtr 默认发送 ICMP 数据包进行链路探测。可以通过 -u 参数来指定使用 UDP 数据包用于探测。相对于 traceroute 只会做一次链路跟踪测试,mtr 会对链路上的相关节点做持续探测并给出相应的统计信息。所以,mtr能避免节点波动对测试结果的影响,所以其测试结果更正确,建议优先使用。

用法说明:

mtr [-hvrctglspni46] [—help] [—version] [—report]                   [—report-cycles=COUNT] [—curses] [—gtk]                   [—raw] [—split] [—no-dns] [—address interface]                   [—psize=bytes/-s bytes]                   [—interval=SECONDS] HOSTNAME [PACKETSIZE]

示例输出:

[root@liuxw-test ~]# mtr 125.94.39.249                             My traceroute  [v0.75]liuxw-test.jcloud.local (0.0.0.0)                      Wed Aug 30 10:23:38 2017Resolver error: Answered class does not match queried class.ields   quit                                       Packets               Pings Host                                Loss%   Snt   Last   Avg  Best  Wrst StDev 1. 10.254.2.254                      0.0%    32    0.8   0.8   0.6   1.2   0.1 2. 100.127.228.13                    0.0%    32    1.1   1.2   1.0   1.6   0.2 3. ??? 4. 105.96.135.219.broad.fs.gd.dynam  0.0%    32    3.9   4.0   2.0   6.4   1.6 5. 113.108.208.209                   0.0%    32    8.4   6.7   4.8   8.9   1.4 6. 202.97.65.101                     0.0%    32   42.5  42.5  40.8  44.8   1.2 7. 220.181.0.198                    74.2%    32   37.6  37.7  37.6  37.7   0.0 8. 220.181.0.106                    74.2%    32   40.2  40.2  40.2  40.3   0.1 9. 218.30.28.161                    96.8%    32   40.4  40.4  40.4  40.4   0.010. 180.149.140.34                   15.6%    32   40.1  40.2  39.7  47.0   1.411. 101.200.109.129                   0.0%    32   42.0  41.7  40.7  43.5   0.612. 106.11.130.189                    0.0%    32   40.9  41.1  40.6  44.2   0.813. ???14. 123.57.221.198                    0.0%    31   44.7  40.7  40.4  44.7   0.8

常见可选参数说明:

-r 或 —report:以报告模式显示输出。

-p 或 —split:将每次追踪的结果分别列出来,而非如 —report统计整个结果。

-s 或 —psize:指定ping数据包的大小。

-n 或 —no-dns:不对IP地址做域名反解析。

-a 或 —address:设置发送数据包的IP地址。用于主机有多个IP时。

-4:只使用 IPv4 协议。

-6:只使用 IPv6 协议。

另外,也可以在 mtr 运行过程中,输入相应字母来快速切换模式,比如:

?或 h:显示帮助菜单。

d:切换显示模式。

n:切换启用或禁用 DNS 域名解析。

u:切换使用 ICMP或 UDP 数据包进行探测。

返回结果说明:

默认配置下,返回结果中各数据列的说明:

第一列(Host):节点IP地址和域名。如前面所示,按n键可以切换显示。

第二列(Loss%):节点丢包率。

第三列(Snt):每秒发送数据包数。默认值是10,可以通过参数 -c 指定。

第四列(Last):最近一次的探测延迟值。

第五、六、七列(Avg、Best、Wrst):分别是探测延迟的平均值、最小值和最大值。

第八列(StDev):标准偏差。越大说明相应节点越不稳定。

Windows环境下链路测试工具介绍

WinMTR 是 mtr 工具在 Windows 环境下的图形化实现,但进行了功能简化,只支持 mtr部分参数的调整设置。WinMTR 默认发送ICMP 数据包进行探测,无法切换。WinMTR 可以从其官方网站下载获取。和 mtr 一样,相比 tracert,WinMTR 能避免节点波动对测试结果的影响,所以测试结果更正确。所以,在 WinMTR 可用的情况下,建议优先使用 WinMTR 进行链路测试。

用法说明:

WinMTR 无需安装,直接解压运行即可。操作方法非常简单,说明如下:

1.如下图所示,运行程序后,在 Host 字段输入目标服务器域名或 IP(注意前面不要包含空格)。

2.点击 Start 开始测试(开始测试后,相应按钮变成了 Stop)。

3.运行一段时间后,点击 Stop 停止测试。

4.其它选项说明:

Copy Text to clipboard:将测试结果以文本格式复制到粘贴板。

Copy HTML to clipboard:将测试结果以 HTML 格式复制到粘贴板。

Export TEXT:将测试结果以文本格式导出到指定文件。

Export HTML:将测试结果以 HTML 格式导出到指定文件。

Options:可选参数,包括:

Interval(sec):每次探测的间隔(过期)时间。默认为 1 秒。

Ping size(bytes): ping 探测所使用的数据包大小,默认为 64 字节。

Max hosts in LRU list: LRU 列表支持的最大主机数,默认值为 128。

Resolve names:通过反查 IP 以域名显示相关节点。

返回结果说明:

默认配置下,返回结果中各数据列的说明:

第一列(Host):节点IP地址和域名。如前面所示,按n键可以切换显示。

第二列(Loss%):节点丢包率。

第三列(Snt):每秒发送数据包数。默认值是10,可以通过参数 -c 指定。

第四列(Last):最近一次的探测延迟值。

第五、六、七列(Avg、Best、Wrst):分别是探测延迟的平均值、最小值和最大值。

第八列(StDev):标准偏差。越大说明相应节点越不稳定。

什么是死亡Ping(Ping of Death)?

什么是死亡Ping攻击?

死亡攻击是一种拒绝服务(DoS)攻击,攻击者的目标是通过发送大于最大允许大小的数据包来破坏目标机器,导致目标机器冻结或崩溃。原来的平安死亡袭击今天不太常见。称为ICMP洪水袭击的相关攻击更为普遍。

死亡Ping如何工作?

互联网控制消息协议(ICMP)回应回复消息或“ping”是用于测试网络连接的网络实用程序,它的工作原理与声纳相似 – “脉冲”被发送出来,并且该脉冲的“回波”告诉操作员有关环境的信息。如果连接正常,源计算机从目标机器接收到一个回复​​。

虽然一些ping数据包很小,但是IP4 ping数据包要大得多,可以和最大允许数据包大小为65,535字节一样大。一些TCP / IP系统从未被设计为处理大于最大数据包的数据包,使得它们容易受到超过该大小的数据包的影响。

当恶意大数据包从攻击者发送到目标时,数据包将分段成分段,每个数据段都低于最大大小限制。当目标机器尝试将这些部分重新放在一起时,总数超过了大小限制,并且可能会发生缓冲区溢出,导致目标机器冻结,崩溃或重启。

虽然ICMP回显可用于此攻击,但是发送IP数据报的任何内容都可用于此漏洞。这包括TCP,UDP和IPX传输。

死亡Ping DDoS攻击如何缓解?

阻止攻击的一个解决方案是对重新组装过程添加检查,以确保在分组重组后不会超过最大数据包大小约束。另一种解决方案是创建一个具有足够空间的内存缓冲区来处理超过最大准则的数据包。

原来的“死亡Ping”攻击大多走过恐龙之路; 1998年以后创建的设备通常受到此类攻击的保护。一些传统设备可能仍然易受攻击。近期发现了针对Microsoft Windows的IPv6数据包的新的Ping死亡攻击,并于2013年中期进行了修补。

什么是Ping(ICMP)洪水攻击?

ping flood是一种 拒绝服务攻击,攻击者试图用ICMP回显请求报文来淹没目标设备,导致目标对正常流量无法访问。当攻击流量来自多台设备时,攻击成为DDoS攻击或分布式拒绝服务攻击。

平洪攻击如何工作?

在Ping Flood攻击中使用的 Internet控制消息协议(ICMP)是由网络设备使用的Internet层协议进行通信。网络诊断工具 traceroute和 ping均使用ICMP进行操作。通常,ICMP回显请求和回应回复消息用于ping网络设备,以便诊断设备的健康和连接以及发送方和设备之间的连接。

ICMP请求需要一些服务器资源来处理每个请求并发送响应。请求还要求传入消息(回应请求)和传出响应(回应 – 回复)两者都有带宽。Ping Flood攻击旨在压倒有针对性的设备响应大量请求的能力和/或使虚假的流量网络连接过载。通过使僵尸网络中的许多设备 使用ICMP请求定位同一个Internet属性或基础设施组件,攻击流量将大大增加,可能导致正常网络活动中断。从历史上看,攻击者经常会 伪造一个假的 IP地址以屏蔽发送设备。随着现代僵尸网络攻击,恶意行为者很少看到需要掩盖机器人的IP,而是依靠一个庞大的非欺骗机器人网络来饱和目标的容量。

Ping(ICMP)Flood的DDoS形式可以分为2个重复步骤:

1.攻击者使用多个设备向目标服务器发送许多ICMP回显请求报文。
2.然后,目标服务器作为响应向每个请求设备的IP地址发送ICMP回应应答分组。

Ping Flood的破坏性影响与对目标服务器的请求数成正比。与基于反射的DDoS攻击(如 NTP放大和 DNS放大)不同,Ping Flood攻击流量是对称的; 目标设备接收的带宽量只是从每个机器人发送的总流量的总和。

Ping洪水袭击如何缓解?

通过禁用目标路由器,计算机或其他设备的ICMP功能,最容易实现禁止Ping洪水。网络管理员可以访问设备的管理界面,并禁用其使用ICMP发送和接收任何请求的能力,有效地消除了对请求的处理和回应回复。这样做的结果是所有涉及ICMP的网络活动都被禁用,使得设备对ping请求,跟踪路由请求和其他网络活动无响应。