Azure网络排查基本梳理
这段时间主要有两个客户的VPN一直出问题,每个月断一次,闪断自动回复或者修改相关配置成功连通后一个月后再断等问题,网络的问题有时候是最让人头疼的,需要有耐心去配合21v和后台去解决,通过遇到这几个case中的学习和官网网络方面参考文档,针对于Azure网络问题的排查做个基本的梳理,以后大家在遇到网络可以有个基本思路,当然比较复杂的问题也需要case by case去研究。
在Azure开的两台VM,测试完就删除释放了,所以IP信息就没有删除。
一. 两台主机之间连通性:
- Ping是很重要的命令,主要通过ICMP的数据包来进行状态报告,Azure上限制了ICMP协议,所以直接使用ping存在超时(当然,如果把NSG的入站规则全部打开,允许任意协议,也可以可以从本地ping通的),一般我们可以用psping或者paping(linux)在测试TCP端口的连通性和网络延迟。如下图,北京psping东区的VM
- 在NSG打开入站规则后,也可以直接使用ping测试连通性,如下图北京ping北区VM;
二. 两主机之间各节点分析
- Windows下是tracert可以看到,Linux下是traceroute,基本上不需要安装特定的包就可以使用,因为限制了ICMP协议,可以看到进入到Azure网络中就都是*请求超时状态
- nslookup and dig: 域名的解析查询,查询到是哪个DNS服务器上进行解析的,查询本地的公网出口,dig提供的信息更多一些,而且可以+trace, +tcp或-x逆向解析,如下:168.63.129.16是Azure平台级DNS IP,最后使用nslookup找到公网出口IP,跟VM IP一致;
- MTR工具,这是个非常方便的工具,集成了ping,nslookup,traceroute等的功能,在linux和windows都可以进行查看,Windows下载:http://winmtr.net/download-winmtr/
- Linux直接用yum install mtr安装就行,输入域名后可以直接看到所有节点信息,包括丢保留,结果可以保存成text或html;第一个图是可以看到Azure VM机器,出去的各节点限制了ICMP协议,所以显示为问号,出去之后可以看到每个节点的显示;第二个图是windows本地机器测试到Google的网络,因为是公司内网,所以看到各节点信息,丢包率为0。
三. 网络性能和带宽测试
- 这里推荐大家一个比较好的工具iperf来测试两台主机之间的带宽,windows和Linux都可以使用,Linux可以yum安装或者make install,一般yum方便些,make的话可以下载安装文件:http://downloads.es.net/pub/iperf/iperf-3.0.2.tar.gz,
- Windows可以下载:https://iperf.fr/iperf-download.php,
- 然后把解压文件放到windows/system32下面就可以cmd直接使用;
- 如下图一:是东区和北区的Azure VM都安装iperf3,做网络带宽测试,先把server端, 如图左边的北区VM的NSG入站规则设置成any,进行40000端口监听,右侧是东区VM,6个并发数据流,测试时间30s,每2s输出一次结果,如图二为测试效果
- 如图三是本地到北区VM的测试效果。所以大家在遇到客户想测试性能的时候
- 如图四是单个数据流可以达到100Mbps,两个VM之间走backbone;
- 当遇到POC测试性能或者客户上线测试网络性能可以使用iperf3进行测试;
四.抓包分析
- 有句话说得好:抓包让一切妖魔鬼怪全部现身,tcpdump就是一种免费的网络分析工具,tcpdump工具可以将网络中传送的数据包截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。通过tcpdump对网络接口进行监听形成日志文件,结合windows抓包工具wireshark进行分析,可以看到目前网络的情况,定位问题;
- 这里推荐大家一个工具,ssh secure shell,可以直接在windows本地主机和Azure VM之间的文件互传,这样.cap文件可以轻松传到本地或者云端,如下第一个图,tcpdump -i eth1 -w demo.cap监听的信息到demo.cap文件,直接拖拽到本地用wireshark打开;
- 如下第二个图,用wireshark打开demo文件,在监听过程中,我从本地ping了VM IP,所以能看到ICMP协议的包,在抓包log中 看到TCP三次握手的信息,Azure DNS的信息;
- 一般情况遇到问题,帮助客户在出现问题的时候进行抓包,同时开case到21v查到相关LB或者VPN GW或者VM的流量信息,保存下来,一起解决问题,这样效率最高。否则只能等到下次问题复现去做这件事,耽误了时间。
-
作为补充,Linux和windows互传文件也可以用rz/sz命令,Xshell ssh到VM,yum install lrzsz,如最后一个图;
# sz filename (从VM下载文件到本地)
# rz (从本地上传文件到VM)
五.总结:
- 如上是近期参考学习的一些总结,这样在遇到客户网络问题的时候可以思路明确的去解决;客户经常会反馈官网访问速度慢或者无法访问,可以先用chrome F12看看网页加载的时间和网页的大小,是不是哪些过大的图片或文件造成了访问慢,提醒优化,如果文件很小,依然访问缓慢,那就需要一步步去看网络的瓶颈在哪,耐心找到问题所在,同时自己也能积累经验。
- 关于Iperf和MTR具体信息可以参考Azure文档:
- https://docs.azure.cn/zh-cn/articles/azure-operations-guide/virtual-network/aog-virtual-network-iperf-bandwidth-test
- https://docs.azure.cn/zh-cn/articles/azure-operations-guide/virtual-network/aog-virtual-network-troubleshoot-mtr
- 如上是基本的思路,尤其是抓包分析更是考验经验积累和技巧,跟大家一起慢慢积累学习;
- 接下来我会把近期遇到的两个复现的VPN连接case分享大家,最后细细看来没有问题,在中间的解决过程中还是必须按照正规的思路去做,这样才会避免因为一些小问题掉坑里出不来。