最近公司网络一直抽风,整个机房网络都不通,严重影响工作效率。后面花了大量人力解决问题后没多久,竟然又再次出现问题了。看着纷乱复杂的网络接线,我们也只是“望洋兴叹”!因为参与了整个问题的处理过程(我不是网关,仅参与了排查和分析过程),不由得对问题产生了一些思考和想法:企业网络到底应该如何规划才能避免不出网络问题?
以下是我们机房的冰山一角:
请问我应该怎样做才能快速定位到问题在哪?
最后不得已,把所有的设备全部下架,所有接线全部重连!!!!!!!!!
一、事件回顾
某天中午,突然出现了机房网络访问不了的情况,办公环境访问测试环境断断续续,PING包时通时不通。因为是办公时间,都没有空处理,想着等一下就好了(我们经常出现断网的情况,大部分时候自己就好了),所以也没有管。直到晚上,网络依旧没有好,此时开始引起了网管的关注。
然后网管带着一票人(4、5个)去机房排查,但是情况就是上面那张图一样,如此杂乱无章的机房布线,网线也没有标记,应该从哪里开始排查起?完全不知道从何下手。最后在各个交换机上,拔网线,插网线,PING,历时一天,终于在第二天的晚上发现是一个虚拟机中有IP冲突了导致。虚拟机配置了我们的网关地址,导致中间有个交换机把包转发到虚拟机上了,但是它又没有路由,无法转发数据,所以整个网络就断了。
于是,我们直接把这个虚拟机删除了。但好景不长,一周之后,网络又出问题了。在历经第一次排查的种种困难后,我们直接放弃了。所有设备全部下架,所有网线全部断开,重新接线。整个网络改造差不多又历时一周。
也是在经过了这一连串的问题后才开始慢慢就思考,网络到底要如何规划才能尽量保证不出问题、少出问题?
虽然我不是网管,但我毕竟是通信工程出来的,也是一个合格的网络工程师!很有必要对问题进行总结。
二、常见网络问题
在工作中,最常遇到的网络问题有三种:
- 环路:在内网的二层环境中,网线首尾两端同时接到了一个交换机上。
- IP冲突:多台设备配置了相同的IP,导致交换机的ARP表经常变化,网络转发出现异常。
- MAC漂移:多出现在交换机和其他网络设备堆叠的环境中,因为很多设备堆叠后会使用虚拟MAC,也会导致交换机ARP表经常变化,数据转发出现异常。
其中前面2个网络问题是办公环境中比较常见的,虽然很简单但是很容易被忽视。第3个问题一般出现在网络出口,涉及到多个产品之间的联动才会出现,例如核心交换机和防火墙同时堆叠才可能出现,场景复杂且十分难查,这里先不讨论。
2.1 环路
环路还有一个名字是广播风暴,当一个二层交换机中有两个端口同时被一根网线连接时,就会出现环路的现象。
因为二层交换机只有数据转发的功能,只知道转发数据,所以数据从一个网口出去又从另外一个网口进来的时候,是无法识别到的。它只知道又有数据过来了,继续转发,一直循环就产生了环路。
这个逻辑其实很简单,相信很多人都会觉得这个情况不可能出现,因为不会有人傻到会这么接线。但实际场景中,这个是非常容易出现的,正因为很简单,所以很容易被忽视了。
环路场景
一般企业网络都是内网环境,一部门通过一个交换机连接起来:
这样内部的用户就可以很方便的互相访问,也可以上网,正常情况下是没有问题的。但是突然有一天,又来了一个设备,需要在内网中使用,于是就串进来了,网络拓扑变成了下面的样子:
现在使用是没有问题的,也可以正常上网。这时小组B的成员(一个萌新)也想使用这个小路由器,因为不清楚上层的网络部署,只知道它上面有个交换机。而他自己的电脑也只有一个网口,所以最简单的办法,把新加的小路由器接到的小组B的交换机上。此时的网络拓扑:
这个时候,网络还是没有问题的。然后因为某种原因,萌新把路由器从路由改成网桥。现在问题就出现了,网络中就产生环路了,因为网桥就相当于一根网线,现在整体的拓扑就变成了:
三个交换机之间就出现了环路!
这种场景在我们办公室环境中经常出现,因为我们的产品一个网关产品,经常会用到网桥模式,基本上1-2天网络就会环路一次。
2.2 IP冲突
以小组C为例,小组C下有两台PC,两者的IP都配置了1.1.1.1:
当收到一个去往1.1.1.1的数据包后,交换机就会发送一个arp报文到整个内网,内网PC收到后判断如果是自己的IP地址就返回MAC地址。
此时PC1收到了ARP请求,给交换机回复自己的MAC地址,交换机收到后,记录下“IP-MAC-端口”三者之间的关系,并写到自己的端口表中:
1 2 3 |
IP地址 MAC地址 端口 ------------------------------ 1.1.1.1 aa:aa:aa:aa:aa:aa 1 |
然后把包发到PC1上。但是问题是,PC2也配置了相同的地址,它也给交换机回了一个arp数据,此时交换机就认为数据发生了变化,将自己的端口表变成:
1 2 3 |
IP地址 MAC地址 端口 ------------------------------ 1.1.1.1 bb:bb:bb:bb:bb:bb 2 |
然后后面去往1.1.1.1的数据包就通过端口2发往了PC2,PC1无法接收到数据包,两者就交替出现了无法访问网络的情况。
有些时候,恶意用户会恶意构造出这种情况,以窃取其他用户的数据包,这种行为我们通常称为“ARP欺骗”。
如果只是内网PC地址冲突,只是会导致这两台PC无法正常上网。但是如果是上面我们出现事故场景中的网关地址冲突,就会导致整个内网区域的所有用户无法上网。
三、解决方案
3.1 环路的解决方案
- 内网用户多的区域,尽量使用跨三层网络部署。特别是网络相关工作比较多的小组,如果需要频繁接入设备等,直接三层隔离。不要使用二层环境。
- 内网环境内慎用网桥和交换机,不清楚网络部署的情况下不要轻易私接交换机,网桥设备确认不会导致网络有问题再接入网络。
3.2 IP冲突的解决方案
- IP冲突实际上需要解决的是ARP欺骗问题,有效解决ARP欺骗的办法只有一个:使用静态ARP。现在大多数的网络设备都有静态ARP的功能,就是为了防止ARP欺骗。
- 内网PC需要注意不要配相同的IP地址了,一般配置IP地址或者系统启动后,都会发送一个免费ARP到网络环境中,如果有IP冲突,免费ARP就能检测到冲突,系统会给与一个提示,说IP地址冲突了,此时就要注意调整IP地址。
四、规范网络环境的重要性
实际上,最有效的办法就是合理规范网络,不要乱接、私接网线。只有接线规范,有条理,网络是很少出问题的。
同时,机房的管理也很重要,网线必须要有固定走线,不能这里接一根,那里接一根,出问题了也会导致排查十分困难。
网管必须要肩负起自己的作用,对没有报备就接入网络的设备必须强制禁止,保证所有的网络接入都是合理的。
评论