《Wireshark网络分析的艺术》—像福尔摩斯一样思考

像福尔摩斯一样思考
Wireshark网络分析的艺术
有位读者在豆瓣上评论我的上一本书,说有阅读侦探小说的感觉。我对此并不觉得惊讶,因为用Wireshark排查问题,和侦探破案的思路是一致的。神探福尔摩斯的破案秘诀是“溯因推理”——先观察所有细节,比如鞋根上的泥疙瘩甚至烟灰;然后作出多种推理和假设;接着刨去各种不可能,最后剩下的“无论多么难以置信,肯定没错。”用Wireshark分析网络包时也类似,我们先要在网络包中寻找各种线索,然后根据网络协议作出推理,接着刨去人为(有意或无意)掩盖的证据,才能得到最后的真相。尤其是和保密机构打交道的时候,工程师进不了机房,文档也不能公开,所以一切线索只能自己在包里找,感觉就更像破案了。

我最近帮一位读者解决的问题就非常典型。他供职的机构内部网站有时候会发生诡异的现象,比如Web服务器的端口号会随机发生变化(具体症状就不多讲了,和本文关系不大)。后来做了排查,把客户端和Web服务器直连,问题就消失了,确认了Web服务器和客户端都没有问题。难道根本原因就出在网络路径上了?可是管理员又声称网络拓扑非常简单,不会出问题的。见图1,客户端和Web服务器在不同的子网里,中间由一个路由器转发。

凭我的经验,这个网络拓扑的确简单到没有出问题的可能。可是已经到了山穷水尽的地步了,只好抓包试试。Web服务器不允许我们登录,所以只能在客户端抓,更糟糕的是抓包时那个诡异的现象并没有发生。你一定会纳闷,正常状况抓的包有什么看头啊?人在走投无路的时候,要求都是很低的,能抓到一点算一点。图2就是抓到的包,看起来一切都很正常:前3个包是三次握手,接着客户端发了个HTTP GET请求,服务器也确认收到了。

既然表面上都是好的,我们再看看每个包的详细信息。1号包的详情见图3,客户端把包交给了一个叫c0:62:6b:e2:bd:88的MAC地址,该地址属于默认网关。将包交给默认网关是合理的,因为Web服务器在另一个子网中,需要路由转发。也就是说,从1号包中没有发现任何异常。

再看看图4的2号包详情。这个包让人眼前一亮,信息量实在太大了。在阅读下面的文字之前,建议你自己先在图中找找亮点。

首先这个包竟然是从MAC地址00:10:f3:27:61:86发过来的,而不是之前提到的默认网关c0:62:6b:e2:bd:88。我不知道这个MAC地址属于什么设备,但这至少说明2号包和1号包走了条不一样的路径。再看其Time to live(TTL)居然是64,理论上经过一次路由的包,TTL应该减去1,变成63才对。根据这两条信息,可以推测管理员提供的拓扑图有误。真正的网络包流向应该接近图5,即客户端发出去的包是经过路由的,而Web服务器发过来的包没经过路由。

其实到这里就可以去找管理员说理了,不过别急,继续往下看。到了图6的第5号包,发现Identification竟然是49031,而同样是来自Web服务器的2号包(见图4)中,Identification却是0。一般发出Identification为0的机器永远都发0,不会一下子跳到49031。也就是说,其实2号包和5号包是两台不同的设备发出来的,这意味着在Web服务器和客户端之间,可能存在一台设备在代理三次握手,而能够代理握手的设备很可能是应对Syn flood攻击的防火墙。

因此图5的拓扑图还不够准确,应该更正成图7的样子。管理员忽视了这台防火墙,可能就错过了发现问题根源的机会。

把以上分析反馈给管理员之后,他果然通过MAC地址00:10:f3:27:61:86找到了一台防火墙。也正是防火墙上的一些错误配置,导致他们遇到了那些诡异症状,改正之后症状就消失了。本文的目的是演示如何在网络包中寻找被掩盖的线索,而不是防火墙知识,所以就不展开了。

从头到尾再复习一下整个过程,是不是很有当侦探的感觉?

注意:
为了保护客户隐私,本文截图里的IP地址和MAC地址都被PS过,这就是为什么有些截图看上去不太自然。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

时间: 2024-10-30 18:45:28

《Wireshark网络分析的艺术》—像福尔摩斯一样思考的相关文章

《Wireshark网络分析的艺术》目录—导读

作者简介 Wireshark网络分析的艺术 林沛满,2005年毕业于上海交通大学,现任EMC网络存储部门的主任工程师.多年来为多个产品团队提供 过技术咨询,范围包括网络.操作系统.文件系统和域等,这就是本书所涵盖的协议如此五花八门的原因.每年临近加薪的日子,他也会组织一些技术培训来提醒上司.本书的部分内容就来自这些培训资料. 平时他也写一些技术博客,你或许还能在IT168或者ChinaUnix技术社区看到它们.本书也有少数内容来自这些博客. 当林先生不在工作时,大部分时间都花在了园艺花卉上,尤其

《Wireshark网络分析的艺术》—三次握手的小知识

三次握手的小知识 Wireshark网络分析的艺术 我原本以为TCP三次握手不值得写,没想到在某技术社区上被提问好几次了.看来感兴趣的人还真不少,还是写一篇吧. 我们知道TCP需要通过三次握手来建立连接,过程如图1所示. 从Wireshark上看到的握手过程就是图2这样的,你可以把Seq号和Ack号代入图1中,看看是否符合规律. 当X和Y的值太大时,看起来就不太友好,尤其是需要对这些号码做加减运算时.于是Wireshark提供了一个功能--把Seq和Ack的初始值都置成0,即用"相对值"

《Wireshark网络分析的艺术》—Linux为什么卡住了?

Linux为什么卡住了? Wireshark网络分析的艺术 到今天为止,已经有5位读者向我求助过这个问题了.症状请看图1,他们通过SSH登录Linux服务器时,输完用户名就卡住了,要等待10秒钟才提示密码输入.这究竟是什么原因导致的呢?其实我也是Linux菜鸟,虽然尝试过搜索"ssh hang"等关键词,但是没找到相关信息. 10秒钟的时间并不算长,吃个薯片喝口咖啡就过去了.但是作为强迫症患者,我还是容不得它的存在,因此便决定写篇文章,向大家演示一下怎样用Wireshark一步步解决这

《Wireshark网络分析的艺术》—被误解的TCP

被误解的TCP Wireshark网络分析的艺术 人一旦形成某种思维定势,就很难再改变了.知道我收到最多的读者来信是问什么吗?"林工,有些TCP包发出去之后没有看到对应的Ack,算不算丢包啊?"这个问题让我很是好奇,明明RFC上没有这样的规定,为什么总有读者觉得每一个数据包都应该有对应的Ack呢?后来才注意到,很多提问者是做网站开发出身的,已经习惯了每个HTTP请求发出去,就一定会收到一个HTTP响应(见图1),因此就把这个模式套到了TCP上.其实不止HTTP,绝大多数应用层协议都采用

《Wireshark网络分析的艺术》—来点有深度的

来点有深度的Wireshark网络分析的艺术前一篇文章发布后,被一些公众号转发了.于是就有资深技术人员找到我,说读完觉得不过瘾,希望来点有深度的.好吧,那篇的确只从表面上介绍了延迟确认在网络发生拥塞时的影响,要往深处分析的话还是有不少料的. 先发散一下思维:除了VMware所建议的关闭延迟确认,还有其他的方法可以解决这个问题吗? 答案是肯定的.既然VMware的文章说"某些提供iSCSI访问的存储阵列在出现网络拥塞时处理不当",就说明还有些存储阵列是处理得当的,即使打开延迟确认也不怕.

《Wireshark网络分析的艺术》—一篇关于VMware的文章

一篇关于VMware的文章Wireshark网络分析的艺术有位读者在VMware的知识库里找到一篇文章,觉得很像他正在遭遇的一个性能问题,便转发给我确认.作为好为人师的技术员,我当然不能让读者失望. 这篇文章大概讲了这样一件事. 问题描述某些iSCSI存储阵列在出现网络拥塞时处理不当,会严重影响VMware的读写性能.这和它们的TCP实现方式有关. 解决方式在VMware和存储阵列上关闭延迟确认(Delayed ACK) VMware和iSCSI存储阵列是什么?我在知识库里找到一个网络拓扑,看起

《大咖讲Wireshark网络分析》—再来一个很妖的问题

再来一个很妖的问题 大咖讲Wireshark网络分析 有读者问,"叔叔,你那些很"妖"的网络问题是在哪找的?我也很感兴趣,但是从来没有遇到过." 叔叔听完这句话,顿时觉得心里好苦--都是这些"妖怪"自己找上门的,我想躲都来不及,哪会主动去找啊!我们全球有几千用户,假如每位用户每年遇到一次网络故障,我就有看不完的包了.<Wireshark网络分析的艺术>中讲到的那些案例,其实只占极小部分,公司电脑里还躺着几百个案例等着整理呢.既然你们对

《Wireshark网络分析实战》目录—导读

版权声明 Wireshark网络分析实战 Copyright Packt Publishing 2013. First published in the English language under the title Network Analysis Using Wireshark Cookbook. All Rights Reserved. 本书由英国Packt Publishing公司授权人民邮电出版社出版.未经出版者书面许可,对本书的任何部分不得以任何方式或任何手段复制和传播. 版权所有

《Wireshark网络分析就这么简单》目录—导读

内容提要 Wireshark网络分析就这么简单 Wireshark可能是世界上最好的开源网络包分析器,能在多种平台上(比如Windows.Linux和Mac)抓取和分析网络包,在IT业界有着广泛的应用. 本书采用诙谐风趣的手法,由浅入深地用Wireshark分析了常见的网络协议,读者在学习Wireshark的同时,也会在不知不觉中理解这些协议.作者还通过身边发生的一些真实案例,分享了Wireshark的实战技巧. 本书不务虚,不注水,几乎页页干货,篇篇精华,力求为读者提供最佳阅读体验,使读者在一