2021/05/20

网络异常排查


[TOC]

简介

出现玩家反馈无法连接服务器,如何去排查问题。

自查服务器情况

1、在本地对服务器进行ping操作,ping发送icmp包,查看网络质量。
2、使用外部工具 http://port.ping.pe/https://www.ipip.net/ ,工具会在各个不同地区对服务器进行ping和连接测试网络情况。
3、使用 telnet 确认,telnet工作在传输层可以确认服务端端口的连通性。
4、通过 netstat 确认服务器开放端口情况。
5、检查服务器防火墙iptables,云供应商的安全组,确认是否因为防火墙将端口drop掉。

1、对服务器进行ping

确认自己网络与服务器连接链路网络质量是否存在问题,对目标服务器发送20次icmp包,查看结果。

ping -c 20 域名

1、不带包头的包大小和带包头的包大小。
2、icmp_seq:ping序列,从1开始; ttl:剩余的ttl; time: 响应时间,数值越小,连通速度越快。
3、发出去的包数,返回的包数,丢包率,耗费时间。
4、最小/平均/最大响应时间和本机硬件耗费时间。

2、使用外部工具进行各个地区访问

使用 http://port.ping.pe/ 对服务器+端口一个连通性测试,此工具会通过不同地区对服务器进行连接测试,判断服务器是否存在问题。

使用 https://www.ipip.net/ ,此工具会通过不同地区对服务器进行ping测试,判断服务器是否存在问题。

3、telnet确认服务端端口连通性

4、使用netstat确认服务器端口开放情况

5、查看防火墙和安全组

前端排查

  • 1、在本地对服务器进行ping操作,ping发送icmp包,查看网络质量。
  • 2、在本地对服务器进行mtr操作,查看网络链路中的质量。这里最好双向确认,即源访问目标和目标访问源的双向使用mtr确认。
  • 3、对服务器进行 traceroute 操作,查看本地网络到服务器经过的链路,如果我们做了mtr,就没必要做 traceroute 了。

1、对服务器进行ping

确认玩家网络与服务器连接链路网络质量是否存在问题,对目标服务器发送20次icmp包,查看结果。

ping -c 20 域名

2、对服务器进行mtr

MTR(My traceroute)是几乎所有Linux发行版本预装的网络测试工具,此工具也有对应的Windows版本,名称为WinMTR。 MTR工具将ping和traceroute命令的功能并入了同一个工具中,实现更强大的功能。

Linux版本的mtr命令默认发送ICMP数据包进行链路探测。可以通过“-u”参数来指定使用UDP数据包用于探测。

相对于traceroute命令只会做一次链路跟踪测试,mtr命令会对链路上的相关节点做持续探测并给出相应的统计信息。所以,mtr命令能避免节点波动对测试结果的影响,所以其测试结果更正确

Loss%:丢包率。
Snt:发送数据包数。
Last:最后一次发送延迟。毫秒
Avg:平均延迟。
Best:最快一次延迟。
Wrst:最慢一次延迟。
StDev:离散,标准偏差。

如果丢包开始于前三跳,一般为本地运营商网络问题,建议检查访问其他网址是否存在相同情况。
如果丢包发生在接近目的服务器的几跳,则可能为目的服务器运营商的网络问题。
针对出现运营商网络问题,收集好信息提交工单给到云供应商,让云供应商协助去跟运营商解决问题。

3、对服务器进行traceroute

通过traceroute我们可以知道从本地到服务器经过了哪些链路。这与mtr功能相似,但mtr集成了ping和traceroute两个功能。

[root@iZwz912lc29uqcsrbsm694Z ~]# traceroute 47.115.8.36
traceroute to 47.115.8.36 (47.115.8.36), 30 hops max, 60 byte packets
 1  10.12.36.18 (10.12.36.18)  1.910 ms 10.12.44.18 (10.12.44.18)  1.659 ms 10.12.40.18 (10.12.40.18)  1.646 ms
 2  10.12.32.81 (10.12.32.81)  2.135 ms * *
 3  10.12.24.86 (10.12.24.86)  2.146 ms *  2.080 ms
 4  47.115.8.36 (47.115.8.36)  3.068 ms  3.138 ms  3.456 ms

记录按序列号从1开始,每个纪录就是一跳,每跳表示一个网关,每行有三个时间,单位是 ms,探测数据包向每个网关发送三个数据包后,网关响应后返回的时间。

mtr场景网络异常问题

目标主机网络配置不当

[root@mycentos6 ~]# mtr —no-dns www.google.com
My traceroute  [v0.75]
mycentos6.6 (0.0.0.0)                         Wed Jun 15 19:06:29 2016
Keys:  Help   Display mode                    Packets               Pings
Host                                        Loss%   Snt   Last   Avg  Best  Wrst StDev
1. ???
2. ???
3. 1XX.X.X.X                              0.0%     10  521.3  90.1   2.7 521.3 211.3
4. 11X.X.X.X                              0.0%     10    2.9   4.7   1.6  10.6   3.9
5. 2X.X.X.X                               80.0%    10    3.0   3.0   3.0   3.0   0.0
6. 2X.XX.XX.XX                            0.0%     10    1.7   7.2   1.6  34.9  13.6
7. 1XX.1XX.XX.X                             0.0%     10    5.2   5.2   5.1   5.2   0.0
8. 2XX.XX.XX.XX                             0.0%     10    5.3   5.2   5.1   5.3   0.1
9. 173.194.200.105                          100.0%   10    0.0   0.0   0.0   0.0   0.0

数据包在目标地址出现了100%的丢包。从数据上看是数据包没有到达,其实很有可能是目标服务器相关安全策略(比如防火墙、iptables 等)禁用了ICMP所致,导致目的主机无法发送任何应答。所以,该场景需要排查目标服务器的安全策略配置。

ICMP限速

[root@mycentos6 ~]# mtr --no-dns www.google.com
My traceroute  [v0.75]
mycentos6.6 (0.0.0.0)                         Wed Jun 15 19:06:29 2016
Keys:  Help   Display mode                    Packets               Pings
Host                                        Loss%   Snt   Last   Avg  Best  Wrst StDev
1. 63.247.X.X                            0.0%    10    0.3   0.6   0.3   1.2   0.3
2. 63.247.X.XX                       0.0%    10    0.4   1.0   0.4   6.1   1.8
3. 209.51.130.213                    0.0%    10    0.8   2.7   0.8  19.0   5.7
4. aix.pr1.atl.google.com                   0.0%    10    6.7   6.8   6.7   6.9   0.1
5. 72.14.233.56                          60.0%    10   27.2  25.3  23.1  26.4   2.9
6. 209.85.254.247                        0.0%    10   39.1  39.4  39.1  39.7   0.2
7. 64.233.174.46                         0.0%    10   39.6  40.4  39.4  46.9   2.3
8. gw-in-f147.1e100.net                  0.0%    10   39.6  40.5  39.5  46.7   2.2

在该示例中,在第5跳出现了明显的丢包,但后续节点均未见异常。所以推断是该节点ICMP限速所致。该场景对最终客户端到目标服务器的数据传输不会有影响,所以,分析的时候可以忽略。

环路

[root@mycentos6 ~]# mtr —no-dns www.google.com
My traceroute  [v0.75]
mycentos6.6 (0.0.0.0)                         Wed Jun 15 19:06:29 2016
Keys:  Help   Display mode                    Packets               Pings
Host                                        Loss%   Snt   Last   Avg  Best  Wrst StDev
1. 63.247.7X.X                           0.0%    10    0.3   0.6   0.3   1.2   0.3
2. 63.247.6X.X                       0.0%    10    0.4   1.0   0.4   6.1   1.8
3. 209.51.130.213                        0.0%    10    0.8   2.7   0.8  19.0   5.7
4. aix.pr1.atl.google.com                0.0%    10    6.7   6.8   6.7   6.9   0.1
5. 72.14.233.56                          0.0%    10    0.0   0.0   0.0   0.0   0.0
6. 72.14.233.57                          0.0%    10    0.0   0.0   0.0   0.0   0.0
7. 72.14.233.56                          0.0%    10    0.0   0.0   0.0   0.0   0.0
8. 72.14.233.57                          0.0%    10    0.0   0.0   0.0   0.0   0.0
9 ???                                    0.0%    10    0.0   0.0   0.0   0.0   0.0

在该示例中,数据包在第5跳之后56和78出现了循环跳转,导致最终无法到达目标服务器。这通常是由于运营商相关节点路由配置异常所致。所以,该场景需要联系相应节点归属运营商处理。

链路中断

root@mycentos6 ~]# mtr —no-dns www.google.com
My traceroute  [v0.75]
mycentos6.6 (0.0.0.0)                         Wed Jun 15 19:06:29 2016
Keys:  Help   Display mode                    Packets               Pings
Host                                        Loss%   Snt   Last   Avg  Best  Wrst StDev
1. 63.247.7X.X                           0.0%    10    0.3   0.6   0.3   1.2   0.3
2. 63.247.6X.X                       0.0%    10    0.4   1.0   0.4   6.1   1.8
3. 209.51.130.213                        0.0%    10    0.8   2.7   0.8  19.0   5.7
4. aix.pr1.atl.google.com                0.0%    10    6.7   6.8   6.7   6.9   0.1
5. ???                                   0.0%    10    0.0   0.0   0.0   0.0   0.0
6. ???                                   0.0%    10    0.0   0.0   0.0   0.0   0.0
7. ???                                   0.0%    10    0.0   0.0   0.0   0.0   0.0
8. ???                                   0.0%    10    0.0   0.0   0.0   0.0   0.0
9 ???                                    0.0%    10    0.0   0.0   0.0   0.0   0.0

在该示例中,数据包在第4跳之后就无法收到任何反馈。这通常是由于相应节点中断所致。建议结合反向链路测试做进一步确认。该场景需要联系相应节点归属运营商处理。

移动端测试工具

苹果iphone测试工具

前往appstore下载 iNetTools

对服务器进行Ping,启动后等待20秒,将Ping结果分享出来。

对服务器进行路由轨迹,它就是traceroute,将结果分享出来。

安卓android测试工具

前往google play下载 PingTools Network Utilities

或者使用浏览器打开google play,然后搜索 PingTools Network Utilities,获取到浏览器地址,然后打开 https://apps.evozi.com/apk-downloader 填入地址进行下来apk包。

或者直接使用已下载好的apk包:下载地址

对服务器进行Ping,点击右上角进行设置 Ping计数20,填入服务器地址,最后将Ping结果分享出来。

对服务器进行路由跟踪,它就是traceroute,点击右上角设置 ping次数3, 填入服务器地址,最后将路由跟踪结果分享出来。

游戏玩家反馈无法连接游戏排查

1、对服务器进行自查,使用以上文档步骤,排查服务器是否存在问题。
2、使用自己本地网络进行连接服务器排查。
3、引导玩家使用浏览器访问地址 ip138.com ,截图拿到玩家的ip地址信息,将结果发给技术。
4、根据是安卓还是苹果,引导玩家下载网络监测包,进行ping和traceroute操作,并将结果发给技术进行排查。

参考文档

云服务器网络延迟与丢包问题定位(mtr工具)
使用ping命令丢包或不通时的链路测试方法
MTR工具使用说明与结果分析