本人小网管一名,毕业后做网络安全(就是管个防火墙、杀毒软件、准入和信息审计啥啥的)1年半多点,去年12月公司唯一的专职网管因为种种原因离职,我被公司调来兼职网管岗位,勉强撑到现在。

先简单介绍一下公司网络环境,我们公司在全国共计4各厂区,欧洲还有3个厂区。我负责全公司的网络建设和维护,当然除了总部所在的主厂区外,其他几个厂区都有人维护不用我太操心。主厂区网络,除了承担日常办公网络外,还承载着全公司的数据中心。主厂区核心为两台cisco 6509E做的VSS,国内数据中心和3个厂区用的核心是思科4500系列,其他的都是cisco 3750。主厂区核心下联,3台3750,8台3560,3台3550(公司网络也要十年以上了,部分老设备还没更换完)作为汇聚,接入层2960和2950。整个主厂区共计交换机200余台,计算机保守估计4000+。

说一下问题表现吧,公司核心自2010年升级为6509后,至今6年时间宕机的情况之前就发生过一两次,原因都是供电的问题。但到了今年6月中旬,那天下班刚到家,公司就不断有人打电话反映上不去网,回去检查后发现6509的主机重启并切换到了备机,当时并未查到原因,同时也因为没有做日志服务器(后来检查show run发现其实做了,不过前几任网管都不用,这服务器就被人忘了,检查日志发现当时存在内存报错)找不什么价值的系统日志。事情发生后,当然是先从数据中心找个有冗余的服务器装个日志工具了。从那以后,天天检查日志。直到前两天,上午九时左右,我又在6509的日志中发现了同样内存报错,就在发现的半个小时后核心再次重启切换到了备机。之后的第二天上午九时,核心备机(昨天切了就没再往回切换)再次重启切换回了主机。

截一段问题日志给大家看看:

3419: -Traceback= 41C863D0z 41C9EFC0z 426EABA0z 426EAFECz 426EB674z 426EA2E4z 40E44CBCz 40E456ECz 40E45DC8z 40E45FECz 40E4861Cz 401F2018z 40235548z 40182218z 401823D4z 41C71D0Cz

3418:  -Process= "ADJ resolve process", ipl= 0, pid= 556

3417: Alternate Pool: None  Free: 0  Cause: No Alternate pool 

3416: Pool: I/O  Free: 5008  Cause: Memory fragmentation 

3415: Sep  6 09:50:49: %SYS-2-MALLOCFAIL: Memory allocation of 308 bytes failed from 0x426EBED8, alignment 32 

上面的就是内存报错的日志。6月份的时候,我也没看明白是怎么回事,以为是哪个内存地址有异常导致的。这两天仔细瞅了瞅,才发现6509的IO内存耗尽导致的重启。至于IO内存怎么看,sh proc mem一下就看到了:

C6509-A>show proc mem

Processor Pool Total:  891159232 Used:  245143636 Free:  646015596

      I/O Pool Total:   67108864 Used:   52429872 Free:   14678992

为了搞清原因我们当然联系经销商做售后,但出现了种种的事端(时间太久出保了,得不到cisco服务支持,哎)。

当然找外援的同时我也没闲着,一直在百度“cisco 交换机内存报错”,终于发现了一篇cisco官方的资料找到眉目,链接如下:

http://www.cisco.com/support/zh/63/mallocfail.shtml#pool

在这篇文章的最后提到了缓冲泄露耗尽内存的问题,顺道再贴两个官文:

http://www.cisco.com/MT/eval/zh/63/buffertuning.html

http://www.cisco.com/MT/eval/zh/63/bufferleak_troubleshooting.html

至于怎么查缓冲泄露,当然是看“show buffers”,我公司cisco 6509的如下:

C6509-A#show buffers 

Buffer elements:

     474 in free list (500 max allowed)

     239627442 hits, 0 misses, 0 created

Public buffer pools:

Small buffers, 104 bytes (total 85715, permanent 1024, peak 86723 @ 2d21h):

     609 in free list (128 min, 2048 max allowed)

     276214906 hits, 90932 misses, 11063 trims, 95754 created

     675 failures (0 no memory)

我只贴出了small buffers的,由上面可以看到,small buffers中实际的报数量是85715个,而在处理中(free list)只有609个。显然,大量未处理的包占据了内存空间,造成了缓冲泄露。如果不及时找出发包机器,IO内存又会急速下降造成6509重启。

要想查看small buffers中包括的具体信息,可以使用“show buffers pool small header”

C6509-A#show buffers pool small header

Buffer information for Small buffer at 0x4791D614

  data_area 0x80290A4, refcount 1, next 0x0, flags 0x2000

  linktype 7 (IP), enctype 1 (ARPA), encsize 14, rxtype 1

  if_input 0x5375B288 (Vlan63), if_output 0x0 (None)

  inputtime 23:31:48.172 (elapsed 4d10h)

  outputtime 00:00:00.000 (elapsed never), oqnumber 65535

  datagramstart 0x802911A, datagramsize 60, maximum size 308

  mac_start 0x802911A, addr_start 0x802911A, info_start 0x0

  network_start 0x8029128, transport_start 0x802913C, caller_pc 0x41225964

  source: 192.168.63.113, destination: 224.0.0.251, id: 0x33B4, ttl: 1,

  TOS: 0 prot: 17, source port 5353, destination port 5353

上面只是截取了8万多包中的一条。经过检查,可以发现在公司vlan 63中192.168.63.113、192.168.63.18等几个IP地址向224.0.0.251这个地址(明显是UDP广播包地址,网管都知道和ARP广播包一个样,都是用来发现邻居计算机的)发送了大量数据包,并积压在6509的内存中得不到处理。

在内存快速耗尽的情况下,我利用show mac address-table address XXXX.XXXX.XXXX和show arp迅速找到相应的计算机,并shutdown相应端口。其后,内存快速消耗趋势被终止了。当然,为了确定是这些电脑缘故,在shutdown一小时后,我找到了其中一台电脑,让他接入公司网络,结果是内存又开始迅速消耗。就这样,造成公司6509宕机重启的那些嫌疑计算机被找到了。

因为这几台电脑在同一vlan,并且是同一部门。我认为是病毒感染的缘故,并没有想到和苹果公司的软件有什么关系。就在当天晚间,恰好我值班,发现6509的cpu占用率突然上升到了99%(一般28%左右),通过show proc cpu sorted 5sec发现,IP input进程和mDNS进程CPU占用异常。IP input进程异常,debug开几秒抓包就行了,我好奇的是mDNS是什么东西。经过万能的百度,mDNS是苹果公司开发一种类似局域网共享、发现计算机的协议,一般存在于苹果机中,而windows系统通过安装itunes也可以实现mDNS协议。

百度,还是百度,进一步的百度mDNS的相关信息,可以发现mDNS一般使用的便是224.0.0.251地址的5353端口。就这样,我猜想这几台电脑应该是装了苹果itunes。

第二天,我将其中的三台电脑扣押了,开始慢慢研究怎么回事。作为一名网安加网管,我的想法是异常的电脑一定要看系统日志,进windows系统日志,检查了一圈,最后在其中一台电脑里面发现了Bonjour Service报错日志,其中有些报错日志中直接包含了mDNS字样。而百度Bonjour  Service会发现,这是itunes一个共享服务,使用正是mDNS协议。似乎我已经找到了源头。

在另一台计算机中,我发现了一个特殊情况,更加印证了我的猜想:

这台计算机在9月份发生第二次6509宕机重启前的一个小时,具体时间是8:11:52和8:11:53,在这两秒钟的时间内Bonjour Service服务共计生成了3万余条错误日志,这也就解答了第一次宕机重启的24个小时后6509内存会突然消耗尽而发生第二次宕机。

再插一句,当我发现这几台电脑时,我的经销商也给我反馈(前面说了,设备脱保了,cisco专业的售后享受不到,只能托经销商花钱找个懂行的)。就懂行的这哥们,看了我两次故障的日志,发了个mail,表示“交换机两次重启是CPU、内存在短时间内耗尽造成的,如果硬件没有问题,就要从内网查找,很麻烦很耗时间,做不了”。结合我们两台6509的来历,一个10年买的,一直做主机,一个13年买的一直做备机,在两天时间内分别重启了一次,不大像硬件问题。我更加确信是内网有啥在捣蛋。呵呵。

总结:

上面废话太多了,主要是想分享一下经历。本文发表时,事故才出现5天时间,目前还在观察期内,我只能说90%是因为苹果公司的Bonjour(在windows的控制面板程序卸载中可以发现改名字的软件,本人屌丝一名买不起iPhone,问这几个问题电脑的哥们也不知道怎么装上的,但是确实是苹果的软件),在局域网中异常发包造成的。

我想很多企业为了实现快速转发,再来就是好配置和管理,都会采用二层构架(就是划vlan、做trunk,极少极少用路由),计算机数量多了,向我们公司这样的,下面三四千电脑,广播包(ARP)组播包(UDP)是核心最大的威胁,尤其是苹果的mDNS协议,如果在普通家庭网中,就五六台设备不会有啥事,如果放在企业中,动辄上百成千的计算机,组播包稍有不慎同样会形成风暴。

转载于:https://blog.51cto.com/liudashang/1851765

APPLE Bonjour服务导致公司网络核心Cisco 6509崩溃的案例相关推荐

  1. android自带的nsd发现服务器,Android NSD(网络服务发现)是否与iOS中的Bonjour服务兼容?...

    I will create a server-less local networking App for iOS and Android. the App in both iOS and Androi ...

  2. Linux下用Apple的bonjour服务进行摄像机搜索

    Linux下用Apple的bonjour服务进行摄像机搜索 关键词:Linux, bonjour, mDNSResponder, 搜索 1.http://www.opensource.apple.co ...

  3. 中国人工智能公司CIMCAI集装箱识别云服务全球用户量领先核心科技领先,免费人工智能集装箱识别云服务,智能化港航中国人工智能公司

    中国人工智能公司CIMCAI集装箱识别云服务全球用户量领先核心科技领先, 免费人工智能集装箱识别云服务,智能化港航智慧港航. 全球领先CIMCAI ENGINE集装箱AI检测云服务,集装箱号识别率99 ...

  4. iOS网络编程-iOS中解析Bonjour服务

    服务器端Bonjour服务发布成功之后,客户端可以通过NSNetService解析服务,解析成功后,可以获得通讯的数据细节,如:IP地址.端口等信息. 首先需要实例化NSNetService对象代码如 ...

  5. 10mbps 局域网组播_无线局域网Apple Bonjour部署指南

    当适合于对支持的组播应用例如Apple的Bonjour协议,本文在运行原理和配置提供信息为Cisco Unified无线LAN解决方案.查询和宣布特定服务的此协议enable (event) Appl ...

  6. 中小型企业网络建设-Cisco Packet Tracer v7.2.2思科网络模拟器实验练习

    注:详细文档在我的下载资源中,拓扑图如不清晰则可查看pkt文件 已将本文中的拓扑图进行了替换,改善了清晰度.若还有疑问,可下载pkt文件进行查看. 用高版本打开,本实验PKT格式文件用7.2.2版本可 ...

  7. 利用Dependency Confusion进入Paypal,Apple,Shopify等公司内部

    漏洞报告原始地址:RCE via npm misconfig -- installing internal libraries from the public registry 漏洞报告时间为2020 ...

  8. 腾讯这家公司的核心竞争力是什么?为什么?

     腾讯这家公司的核心竞争力是什么?为什么?         Andy Pan ,腾讯无线国际业务产品总监, 腾讯国际业务部... 我决定在国外出差的最后一晚晚点休息,在酒店静静的认真的回答这个问题 ...

  9. 每小时50哈希——看看一个内部员工是如何摧毁整个公司网络的?

    本文讲的是每小时50哈希--看看一个内部员工是如何摧毁整个公司网络的?, 我们以前曾调查过黑客会通过连接在USB端口的正在充电的手机实施攻击,在这项研究中,我们重新审视了USB端口的安全性.我们发现, ...

最新文章

  1. 鱼眼相机标定_鱼眼相机模型(二)
  2. 开发脚本自动部署及监控
  3. pytorch 测试 darknet
  4. linux 常用命令20190917
  5. python 如何放心干净的卸载模块
  6. 物理太难?这些虚拟动图,让你看懂物理
  7. jsf集成spring_JSF 2,PrimeFaces 3,Spring 3和Hibernate 4集成项目
  8. 微软亚研院 | 智能信息检索综述
  9. php redis 封装类,php redis封装类
  10. 在Razor中如何引入命名空间?(import namespace in razor view)
  11. http断点续传的原理
  12. Java中的sql语句代码拼接问题
  13. 欢迎使用CSDN-markdown编辑器闲置iPhone别扔 利用Carplay打造智能汽车
  14. Sublime中使用livereload插件实时预览html文件
  15. LWN: lockless编程模式——relaxed access和partial memory barrier
  16. 打开word2016文档时提示用文本恢复转换器打开文件
  17. linux 工具——终端分屏与vim分屏
  18. 机械结构_day12
  19. 能力素质有所欠缺_如何提高孩子动手能力?
  20. 音乐剧推荐-<<爱在思念的两端>>

热门文章

  1. 打麻将要诀,送给以前常输的你
  2. 为了买基金,写个基金理投资财分析系统,哈哈可以凑活用
  3. mw320r虚拟服务器,新版水星MW320R路由器设置教程 | 192路由网
  4. 游侠联机服务器没有响应,求助,游戏联机出现错误 - 《生存之旅2》 - 3DMGAME论坛 - Powered by Discuz!...
  5. windows7英文版变成中文版教程
  6. Error: Protocol error, got “H“ as reply type byte
  7. 【胡搞的不能AC的题解,暴力搜索一发博弈问题】1995 三子棋 - 51Nod
  8. [T-ARA][TIAMO]
  9. 初识OpenVINO
  10. 将LOL英雄联盟模型导入Unity3D