V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
falseen
V2EX  ›  DevOps

[不吐不快]关于一次离奇的网络故障。

  •  5
     
  •   falseen · 2016-12-17 02:32:05 +08:00 · 9425 次点击
    这是一个创建于 2936 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这件事呢,本来是不想发到网上的,因为我是个特立独行的人,不到万不得已我是绝不会到网上求助的。但这一次,我是真的没办法了,虽然事情已经过去了很久,并且故障已经得到了解决。但是对于故障的根本原因,我仍然是百思不得其解。所以思来想去还是决定发到这里,看看大家有没有什么高见。

    事情是这样的:我是做网络维护的,前一段时间接到了一个单。有个客户的网络出了点故障,让我过去看看。我去到了以后发现他们整个局域网都瘫痪了。网络结构也不是很复杂,都是一些傻瓜型的二层交换机。我注意到交换机的灯闪的非常慢,说明此时的数据量是比较小的。稍微了解了一下情况之后我开始接上电脑 ping 网关,不通, ping 同网段的其他设备,也不通。于是接上电脑开始抓包,这时令我震惊的一幕出现了---我惊奇的发现我竟然收到了网关的回应包( ICMP ),但是为什么之前 ping 的时候却显示超时呢 ?我又 ping 了一次,还是显示超时。这时我真的有点不敢相信自己的眼睛了,难道我见鬼了吗?我盯着网关返回来的包看了很久很久,然后突然想到会不会是 IP 包的校验码不对?因为之前就一直怀疑可能存在 ARP 攻击,所以 IP 包校验码错误也不是没有可能的。正当我准备用 python 重新计算校验码之际,我突然瞥到了 wirshark 中 ICMP 的一个值:[Response time: 4018.850 ms]。靠,搞了半天原来是这个原因。原来真的是“超时”了啊!

    但是,为什么会超时呢?同一个局域网内怎么会超时呢 ?为什么网关过了那么久才回应?是网关的问题?还是交换机的问题?抑或是真如我所料出现了 ARP 欺骗?于是我开始慢慢排查原因,在检查了 MAC 地址和分析了大量的数据包之后,我基本上排除了 ARP 欺骗。数据包看起来没有任何异常。在用尽了各种办法之后,我开始用最原始的排除法来找原因---分别拔下交换机上的网线,从而找到是哪台设备出了问题。他们大概有四台二层交换机,每台交换机上都接了很多设备。于是我开始拔掉这些二层交换机上的主网线,在拔掉一台交换机上的主网线之后,网络立马恢复了正常,插上,网络又立马瘫痪。反复多次之后基本上确定了就是这台设备的问题。为了节省时间,我直接换了一台新的交换机。但是换上之后问题还是存在,说明不是交换机的问题。于是开始依次拔掉这台交换机上的网线,可能是我的运气不太好,在拔掉最后一根网线的时候,网络才恢复了正常。然后我反复的拔掉网线又插上网线,最终找到了两台有问题的 PC 。只要把这两台 PC 的网线一插上,网络就整个瘫痪。一拔掉,网络立马就恢复。

    我以为找到了原因,剩下的就好办了。但事实完全相反,真正麻烦的才刚刚开始。我一开始怀疑是病毒,所以首先是在故障 PC 进行了抓包,没有发现任何异常。然后用 U 盘进入 PE ,把 IP 设置成原来的,发现一切正常,网络没有出现问题。于是开始在 PE 下杀毒,花了很长时间,终于杀完了,但重启之后问题依旧。这时候我开始头疼了,杀毒无效,那就只能重装系统了。但此时我发现了一个更加令人震惊的事实,我在另外一台故障 PC 上进入 win7 PE 之后问题竟然又出现了(之前那台进的是 03PE ,故障 PC 也是 win7 系统)!!这个时候我是有点懵逼的,不知道该怎么办。我不敢相信在 PE 中也会出现这种情况,难道是 PE 的问题?虽然心中有疑惑,但此时我已经没有别的选择了,只能硬着头皮重装系统。祈祷重装之后一切都恢复正常。但结果总是事与愿违。。。

    花了很长时间把两台 PC 都重装了系统之后,我以为问题会得到解决,但结果却是。。。。问题依旧!!还是只要接上网线,整个网络就瘫痪。这个时候我是崩溃的,习惯性的打开 wireshark 抓包,依旧没有任何异常!这该如何是好啊,我看了一下时间,已经下午五点多了,人家也快到下班时间了。从上午 10 点多到下午五点多,搞了这么久也没搞好。我一直认为是在网络方面的经验还是挺丰富的,没想到竟然被这个问题给难倒了。唉。想了一下,时间也不早了,我要尽快做出决定。思索了一番之后,我决定做最后一次尝试---更新网卡驱动。说实话,在试之前我是没有抱太大希望的,纯粹是死马当活马医。正所谓“有心栽花花不开,无心插柳柳成荫”,我万万没想到的是,在更新了网卡驱动之后奇迹出现了---网络竟然不再瘫痪了!问题解决了!我做梦也没想到竟然是网卡驱动的问题!这让我有点欣喜若狂,总算是可以交差了。于是就这样问题得到了圆满的解决,在跟客户说明了问题和解决过程之后我就走了。

    本来这件事到这里基本上就结束了,但偏偏我是个喜欢刨根问底的人。虽然那天的问题解决了,但对于问题的根本原因,我仍然是百思不得其解。我想不明白一张网卡是如何影响整个网络的,更想不明白如何在数据包没有任何异常的情况下影响整个网络。即便是网卡有问题,也不可能说影响整个网络,更何况网卡本身没有太大问题,只是驱动可能存在一些 BUG 。但是一个有问题的网卡驱动又是如何影响整个网络的呢?那天晚上回去之后,我开始分析白天保存的数据包,上网查了很多资料,也问了很多朋友。但始终没有得到满意的答案。有朋友说,可能是在物理层影响的,所以抓不到异常的包。但是在我看来,如果是物理上的影响的话,应该只会影响当前的交换机,不会影响跟它相连的其它交换机才对。但实际情况却是,出现问题的时候,其他相邻的交换机也瘫痪了。真是百思不得其解啊。

    以上就是这次离奇的网络故障的全部经过,为了各位能完全明白当时的情况,写的稍微有点啰嗦,请大家见谅。我本身很少在网上发帖,这次发帖主要是想听听大家的意见,毕竟一个人的思维是有限的。希望大家能帮我分析一下导致这次网络故障的根本原因,感激不尽!

    补充:暂时不知道怎么发图,稍后再把图补上吧。

    55 条回复    2019-12-05 16:52:05 +08:00
    cnusrso
        1
    cnusrso  
       2016-12-17 02:43:54 +08:00 via Android
    应该备份下旧的网卡驱动,有时间可以分析。
    falseen
        2
    falseen  
    OP
       2016-12-17 02:50:49 +08:00
    @cnusrso 最重要的一点忘说了,两台故障 PC 的网卡是同一型号的板载网卡,其他没有故障的 PC 的网卡型号跟他们两个不一样。

    网卡的型号是 qualcomm atheros ar8151 ,驱动是 GHOST 系统自带的,以及 win7PE 自带的驱动,也是同样的情况。
    lydasia
        3
    lydasia  
       2016-12-17 03:02:17 +08:00
    Ghost ,盗版不说,也太业余了吧。
    falseen
        4
    falseen  
    OP
       2016-12-17 03:02:40 +08:00
    另外需要补充的一点是,用 03PE 自带的驱动是没有任何问题的。而且在问题出现之前,他们的系统和驱动都没有人动过。那之前他们的 PC 是如何正常工作的?为何突然就不能正常工作了呢 ?如果是物理上的原因的话,不可能两台 PC 的网卡同时坏掉。我觉得最有可能的情况是网卡驱动本身存在 BUG ,但在一般情况下,这个 BUG 不会发作。只有某种特殊的条件满足的时候,这个 BUG 才会显现出来。那么这个特殊的条件又是什么呢 ?什么样的网络环境才会导致这个 BUG 的发作 ?
    falseen
        5
    falseen  
    OP
       2016-12-17 03:03:59 +08:00   ❤️ 1
    @lydasia 时间就是金钱啊,用原版去装那得浪费多少时间。
    ewBuyVmLZMZE
        6
    ewBuyVmLZMZE  
       2016-12-17 03:11:51 +08:00
    MAC 冲突了而已
    falseen
        7
    falseen  
    OP
       2016-12-17 03:14:45 +08:00
    补一张图,其中 192.168.1.1 是网关:

    [Imgur]( )
    longear
        8
    longear  
       2016-12-17 05:24:55 +08:00   ❤️ 8
    认真看完了,行文流畅,有种惊悚的感脚 🙃
    dynaguy
        9
    dynaguy  
       2016-12-17 05:31:22 +08:00
    arp flood/storm?
    gino86
        10
    gino86  
       2016-12-17 08:22:58 +08:00
    记得以前遇到过类似的,一台电脑 Hardware Malfunction 蓝屏,结果整个网络瘫了
    21grams
        11
    21grams  
       2016-12-17 08:29:50 +08:00 via Android
    没必要深究,一台电脑搞得整个网络瘫痪是很常见的事
    ovear
        12
    ovear  
       2016-12-17 08:46:43 +08:00 via Android
    看看网卡驱动更新日志
    我能想到的是网络风暴,但是流量很小就不怎么符合了
    Fleey
        13
    Fleey  
       2016-12-17 08:47:57 +08:00
    好东西 - - 有时间我也去研究一下。这东西威力巨大
    nikoo
        14
    nikoo  
       2016-12-17 08:50:43 +08:00
    两台有问题的 PC 是新接入的机器?还是之前没问题突然出问题了?
    zangev5
        15
    zangev5  
       2016-12-17 09:23:26 +08:00   ❤️ 1
    我居然看完了,厉害了我的楼主
    xfspace
        16
    xfspace  
       2016-12-17 09:43:22 +08:00 via Android
    用的 Ghost ,估计驱动被植入病毒(要不就是 BUG),把路由器弄死了,看看进程和负载,揪出那个进程。
    你也说到,傻瓜交换,那整个局域网都是同一广播域,同一路由器做网关,路由器处于半挂死状态,数据自然出不去。
    cnkuner
        17
    cnkuner  
       2016-12-17 09:46:20 +08:00 via Android
    我看到中间的时候就感觉是网卡的问题。
    其实将网线中的两条短路也有这个效果。
    mortal
        18
    mortal  
       2016-12-17 09:48:58 +08:00
    不太清楚,我只知道我家大法电视要是 LAN 连接到路由器上,网就瘫痪了;只能用 WLAN 。
    yydcool
        19
    yydcool  
       2016-12-17 10:00:39 +08:00
    @falseen ghost 装系统很好用啊
    a2
        20
    a2  
       2016-12-17 10:10:47 +08:00 via iPhone
    Too long
    xmh51
        21
    xmh51  
       2016-12-17 10:18:05 +08:00
    目测广播风暴 好多人都是这样,一台电脑瘫痪整个局域网。
    http://www.clxp.net.cn/thread-1993-1-1.html
    a87150
        22
    a87150  
       2016-12-17 10:44:19 +08:00
    勉強になります
    liyvhg
        23
    liyvhg  
       2016-12-17 11:12:09 +08:00 via Android
    @xmh51 但是交换机灯闪烁不频繁
    zjqzxc
        24
    zjqzxc  
       2016-12-17 11:17:06 +08:00
    在学校的时候处理过一次广播风暴,因为二层交换机有管理功能,直接看端口流量发现异常了,封端口问题解决。(后续我没再跟进);
    当时连入网络的机器有 10MB/s 的下行流量(百兆网),抓包后发现大量广播包,很容易判定。如果说楼主抓包未见异常,交换机灯闪烁比较慢,估计不是广播风暴。
    不知道楼主有没有保存当时抓包的结果呢

    想了半天,认为可能的(非根本)原因是路由上的交换机芯片超载或者是路由器超载了,诱因可能是那两台电脑向网关发送了异常的包导致交换机(指的是路由器上的交换机芯片或者路由器本身)死循环了。
    根本原因猜不到,对数据链路层没研究过,不知道有没有一些特殊的包可以骗交换机进入死循环。。如果楼主抓包时间足够的话,可能已经抓到了可能是罪魁祸首的包。
    wemore
        25
    wemore  
       2016-12-17 12:04:30 +08:00 via iPhone
    借楼主帖问个问题,我的腾讯云 centos6 ping 显示 unknown host 。 ping ip 没问题, dns 也没改过,网卡服务重启,机子重启也不行。在安全组也是全放行的,防火墙啥的应该没有开,各位有啥解决方法吗_(:з」∠)_
    redsonic
        26
    redsonic  
       2016-12-17 12:46:53 +08:00
    我怎么感觉是那些傻瓜型的二层交换机的锅。 回想上大学的那会儿,宿舍两个网口,有 SB 把两个口直接连起来了,先后导致楼栋里的两台华为交换机烧了,后来换思科的就没事了。难道华为的连防风暴的功能都没有,现在想想那会儿华为还是皮包公司也就说的通。
    redsonic
        27
    redsonic  
       2016-12-17 12:59:26 +08:00
    关于网络设备的缺陷我又想到一个, intel ping of death ,就是发一些 icmp 包就能让 intel 网卡内部重启:
    http://www.kriskinc.com/intel-pod
    这个我经历过,从此认识到硬件开源的重要性。
    ndd200
        28
    ndd200  
       2016-12-17 13:15:54 +08:00
    十几年前。我碰到过和楼主类似的经历。
    某一批板载网卡,会乱发包导致整个交换机断网。
    每次只要重启交换机就能好,而且那批机器数量很大。当时也很难想到是一整批网卡的问题,单台拿出来用怎么都是正常的。
    所以问题最终定位花了一个多月。最后,换了更好的交换机再没故障过。
    500miles
        29
    500miles  
       2016-12-17 13:40:36 +08:00   ❤️ 1
    @longear 确实是这样.. 像看惊悚恐怖小说一样
    MasterMonkey
        30
    MasterMonkey  
       2016-12-17 15:15:34 +08:00 via iPad   ❤️ 1
    看楼主这么难过,我分享下我的经历吧,大概十年前我们机房的电脑总是启动不了,搞不明白,后来发现不联网线就可以,启动后联网就可以。

    后来不服气,接上网络软件分析下,果然有奇怪的包,再后来,没继续关注。

    我对开机之前电脑基于网络进行的操作只局限于 Wake on lan ,但是,显然还有更多可能,应该有规范说明,或者网卡自己的特殊指令,这也说明了商业的产品里面有多少后门你根本不知道。
    iCyMind
        31
    iCyMind  
       2016-12-17 15:54:56 +08:00 via Android
    文笔真棒,各种疑问句抛出悬念,引人入胜,楼主没少看走进科学吧
    guanaco
        32
    guanaco  
       2016-12-17 16:24:39 +08:00
    mac 问题
    falseen
        33
    falseen  
    OP
       2016-12-17 16:35:33 +08:00
    @zjqzxc 你说的也有道理。确实有可能是故障 PC 向交换机发了一个特殊的包,导致交换机进入死循环。如果是这样的话,那这种发包频率肯定很频繁。因为实际情况是只要插上网线网络就瘫痪,拔掉,网络就恢复。我结合这个情况查找了故障 PC 的发包记录,发现最频繁的是 DNS 请求,其次是一些软件的请求。但是,这其中并没有异常包。

    另外需要说明的是,故障出现的时候,不止是网关 ping 不同,其他同网段的 PC 也 ping 不通。

    通过抓包来看,故障 PC 偶尔是可以正常通信的(其他是 PC 完全无法通信,当然 UDP 包是可以收到的,因为 UDP 不存在超时),但无法 ping 通网关,也无法打开网页(当然,所有对外的通信都是经过网关的, MAC 地址是一致的)。如图:

    falseen
        34
    falseen  
    OP
       2016-12-17 17:10:20 +08:00
    @iCyMind 嘿嘿,我是悬疑爱好者,看过很多悬疑电影和悬疑小说。
    yekailee
        35
    yekailee  
       2016-12-17 17:30:52 +08:00 via Android
    检查 mac 地址没有,是不是网卡 mac 地址和网关一样的?
    D3EP
        36
    D3EP  
       2016-12-17 17:40:40 +08:00 via Android
    可能和 mac 地址有关?
    datocp
        37
    datocp  
       2016-12-17 18:55:50 +08:00
    遇到过 2 次广播风暴,
    一次是人家不懂,一根网络接在交换机 2 个口上。
    第二次是教学软件 netop school 产生的广播包冲击主路由,
    最终解决方法,由于 vlan5 里所有的设备都是用静态网关就直接把所有的广播,多播全部丢弃
    insmod ebtables
    insmod ebtable_filter
    insmod ebt_pkttype
    iptables -I INPUT -i vlan5 -m pkttype --pkt-type broadcast -j DROP
    iptables -I INPUT -i vlan5 -m pkttype --pkt-type multicast -j DROP
    #iptables -I INPUT -i vlan5 -m pkttype --pkt-type unicast -j DROP 该包不能丢弃,不然网络访问有问题。
    如果知道是哪个端口的话也可以这样 1900 是 windows 的 upnp 1971 netop school 10001uap 广播包
    iptables -I INPUT -p udp -m multiport --dport 1900,1971,10001 -d 255.255.255.255 -j REJECT --reject-with icmp-proto-unreachable
    raptor
        38
    raptor  
       2016-12-17 19:24:03 +08:00
    这种问题我的经验一般是硬件问题,可能是因为网卡发生了某种硬件故障,而原来的驱动无法处理,换了驱动只是暂时解决,可能未来某个时候这种故障还会扩大。
    alect
        39
    alect  
       2016-12-17 21:12:56 +08:00
    我之前的一个台式机也是出现过这个问题,插上网线后发现网卡的流量包突增,新装系统也不行,网络几分钟就瘫痪了,然后插上无线网卡上网没问题
    cat9life
        40
    cat9life  
       2016-12-17 21:20:58 +08:00 via Android
    交换机要是有 snmp 的话 建议监控交换机的 cpu 内存使用率。细节分析估计就麻烦了,真得去反编调试分析驱动了。
    mazyi
        41
    mazyi  
       2016-12-17 21:59:01 +08:00
    不是网络风暴,我感觉可能是那两台 PC 的网卡和交换机的某个 bug 撞到一起了,我觉的只要用相同的网卡和交换机应该是可以重现问题的,这样的话就只需要在连接上问题 PC 之前一直对交换机进行监控就可以了,这样应该可以找到最终的问题。
    数据量很小 and 并不是丢包而是响应时间变得超长很有可能是问题 PC 的网卡伪装了。
    etnperlong
        42
    etnperlong  
       2016-12-17 22:04:56 +08:00
    一字一句看完了,有种悬疑小说的感觉。最有可能应该是硬件 bug ,收到特殊构造的包,导致交换机死循环吧。
    jimzhong
        43
    jimzhong  
       2016-12-17 22:39:07 +08:00
    你需要一个有端口镜像功能的三层交换机。
    lemonda
        44
    lemonda  
       2016-12-17 22:47:28 +08:00
    没人和楼主一样有过这种问题解决了但是不明白为什么如鲠在喉的感觉么
    wohenyingyu02
        45
    wohenyingyu02  
       2016-12-17 23:07:31 +08:00 via iPhone
    楼主是写小说出生的么,剧情描绘的跌宕起伏,有理有据,一看根本停不下来,表达清晰无比,如此复杂的情况大家一看就懂,和 V2EX 其他问题求助帖有天壤之别,实在佩服。
    MikuM97
        46
    MikuM97  
       2016-12-17 23:20:17 +08:00
    蛋疼的是,级联的都是傻瓜交换机,如果级联的是可网管的交换机,应该去交换机上面看看 cpu 占用,以及 mac 地址表是不是有翻动的情况。根据你的描述,问题应该出现在网卡驱动上面,如果你有驱动备份以及相应的硬件,可以尝试复现这个问题,然后用有端口镜像功能的交换机抓包试试。
    kttde
        47
    kttde  
       2016-12-18 01:02:48 +08:00
    @wemore ipv6
    konakona
        48
    konakona  
       2016-12-18 01:07:55 +08:00
    @longear 我也是,让人一眼就能看明意思。
    楼主也是隐士高人。
    webjin1
        49
    webjin1  
       2016-12-18 02:25:06 +08:00 via Android
    百度搜下 vlan 1 攻击。可网管交换机我们也不用默认 vlan1
    rssf
        50
    rssf  
       2016-12-18 08:55:46 +08:00 via iPhone
    做网络维护你居然用 ghost 系统,明显是给自己挖坑
    realpg
        51
    realpg  
       2016-12-18 22:45:54 +08:00
    @falseen 回复 33 楼
    你这根本明显就不是三层以及更高层的问题
    你总拿抓到的解析过的三层包说事儿……

    另外 回复你的整体这个问题
    这并不是网卡驱动 BUG 。你进 windows 网络,右键有线网卡属性(本地连接),点配置,高级
    看到会有一系列更高级的底层参数了吧?

    你重装驱动的过程会重置这些参数到默认。

    你这个问题很有可能就是这些底层的参数被用户瞎改了,这里面会有很多网卡的高级功能,有很多是独家的比如各家的巨大帧之类的开关,比如一些特殊的 VLAN 透传策略,比如各家自定义的 trunk 模式,很可能其中一个被用户瞎改了,这里发出去的就不是标准的包了,而交换机处理这种异常会耗死 CPU ,导致网络处理能力下降,继而导致转发性能下降……
    falseen
        52
    falseen  
    OP
       2016-12-18 23:08:19 +08:00
    @rssf 只是普通的 PC ,不是服务器。 GHOST 并没有太大的影响。
    falseen
        53
    falseen  
    OP
       2016-12-18 23:14:30 +08:00
    @realpg 不是三层包,是二层包。设备的数量并不多,所有没有分 VLAN 。

    关于你说的网卡属性的问题,我可以百分百确定,不是网卡属性的问题。因为我重装了系统之后问题还是存在,甚至在 WIN7PE 下这个问题也仍然存在。所以可以确定是驱动引起的,当然应该不全是驱动问题,应该还存在其它诱因。
    rssf
        54
    rssf  
       2016-12-19 08:37:15 +08:00 via iPhone
    收费给人维护还用 ghost 系统,只能证明是忽悠
    send2me
        55
    send2me  
       2019-12-05 16:52:05 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   989 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 21:10 · PVG 05:10 · LAX 13:10 · JFK 16:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.