百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

一次Linux服务器双网卡网络问题的排查过程回溯

bigegpt 2024-09-11 00:51 4 浏览

一次Linux服务器双网卡网络问题的排查过程回溯

昨晚9点在回家的地铁上接到一个故障

电话+QQ上沟通了解到的信息推断出来的拓扑如下,Linux服务器(下面我统一用“平台”两字来代替)

调试PC 172.16.2.249 连接的校园无线WiFi,是可以ping通平台的网卡eth0地址192.168.8.200 但区域同事电话/QQ报了一个故障,出现一个很奇怪的现象:

1、 平台重启后调试PC就ping不通平台192.168.8.200地址了,ping192.168.8.X段的其他IP(除了平台192.168.8.200)也是可以ping通的

2、 将192.168.8.200这个IP配到调试PC上,将接平台eth0的网线接到调试PC上,接入校园无线的其他PC也可以ping通192.168.8.200调试PC

由于当时我这边无法远程,QQ上要区域同事使用ifdown eth0,然后ifup eth0,这样重启网卡,发现调试PC又可以ping通平台192.168.8.200了

但是区域重启平台后发现问题复现了 这中间有要区域同事排查是否存在与192.168.8.200 IP地址冲突的情况,以及ARP表等操作,问题未解决


在地铁上区域同事说平台有映射到公网,我用手机fing工具扫描端口都通的

到家后通过SecureCRT连接平台公网IP,登录后台,同时Teamviewer远程到现场内网环境

远程过去由于当时发现调试PC只连了校园无线,未插内网网线到有线网卡

调试PC是可以上外网 ping ,以为平台也是通过192.168.8.200这张网卡上的外网,排查的思路就觉是内网这块核心交换机出了问题


Telnet到核心交换机上查看配置 show run ,show ip int brief , show ip route,一顿操作猛如虎

交换上ping192.168.8.200正常

各种调试都未找到问题原因,开始慢慢查

1、在交换机上查看192.168.8.200的arp表项找到192.168.8.200这个地址的MAC地址

2、通过mac地址去找这个地址的MAC地址是从哪个接口获取的

3、 发现是从S8506E核心的G1/5接口学习到的mac表项后,LLDP协议去发现有没有邻居交换机

可以发现核心S8506E连的是一台S5750C汇聚交换机的G0/6接口

这台交换机的管理地址是172.31.10.200

SecureCRT Telnet 172.31.10.200到这台汇聚交换机上,查mac地址表,可以查到平台192.168.8.200接的这台交换机的G0/5接口

G0/5接口划到VLAN 50里了,然后shutdown接口,立马ping不通192.168.8.200了,就能确定平台是接的这个G0/5接口

同样的方式去找调试PC所接的交换机,发现调试PC上面是一台无线控制器WS6008

后来区域同事说平台的eth1网口Eth1 10.11.211.4才是默认网卡,是通过这个网卡映射到公网的,这时大概知道排查方向错了

根据上面的诊断与排查,以及交换机上的配置,绘制出平台大致的拓扑架构如下

这时查看平台的网卡配置

看到这两个红框后,立马知道原因了,重启平台服务器后,默认网卡一直在调换,所以平台的默认路由0.0.0.0是走eth0 (192.168.8.200)这张网卡时,调试PC 172.16.2.249就可以ping通192.168.8.200

而当平台的默认路由0.0.0.0是走eth1 (10.11.211.4)这张网卡时,调试PC172.16.2.249就ping不通192.168.8.200,因为平台默认路由走的eth1网卡,没有指定去往172.16.X.X段走eth0这张网卡


解决办法和步骤

1、 vi /etc/sysconfig/network-scripts/ifcfg-eth0

删除eth0网卡配置中的DEFROUTE=yes字段,保证eth1是默认网卡

2、 添加一条静态路由去往172.16.X.X段走eth0这张网卡

route add -net 172.16.0.0netmask 255.255.248.0 gw 192.168.8.1

并加到启动脚本中,保证开机能自启动

3、 reboot重启验证问题是否解决

4、 查看路由表就知道问题OK了 ping一下7段的地址172.16.7.254验证

其实问题很简单,Linux服务加一条静态路由就解决了,可能自己一开始通过同事给出的信息形成了思维定式,绘制出拓扑后,立马就清晰,问题接着就迎刃而解了

相关推荐

Go语言泛型-泛型约束与实践(go1.7泛型)

来源:械说在Go语言中,Go泛型-泛型约束与实践部分主要探讨如何定义和使用泛型约束(Constraints),以及如何在实际开发中利用泛型进行更灵活的编程。以下是详细内容:一、什么是泛型约束?**泛型...

golang总结(golang实战教程)

基础部分Go语言有哪些优势?1简单易学:语法简洁,减少了代码的冗余。高效并发:内置强大的goroutine和channel,使并发编程更加高效且易于管理。内存管理:拥有自动垃圾回收机制,减少内...

Go 官宣:新版 Protobuf API(go pro版本)

原文作者:JoeTsai,DamienNeil和HerbieOng原文链接:https://blog.golang.org/a-new-go-api-for-protocol-buffer...

Golang开发的一些注意事项(一)(golang入门项目)

1.channel关闭后读的问题当channel关闭之后再去读取它,虽然不会引发panic,但会直接得到零值,而且ok的值为false。packagemainimport"...

golang 托盘菜单应用及打开系统默认浏览器

之前看到一个应用,用go语言编写,说是某某程序的windows图形化客户端,体验一下发现只是一个托盘,然后托盘菜单的控制面板功能直接打开本地浏览器访问程序启动的webserver网页完成gui相关功...

golang标准库每日一库之 io/ioutil

一、核心函数概览函数作用描述替代方案(Go1.16+)ioutil.ReadFile(filename)一次性读取整个文件内容(返回[]byte)os.ReadFileioutil.WriteFi...

文件类型更改器——GoLang 中的 CLI 工具

我是如何为一项琐碎的工作任务创建一个简单的工具的,你也可以上周我开始玩GoLang,它是一种由Google制作的类C编译语言,非常轻量和快速,事实上它经常在Techempower的基准测...

Go (Golang) 中的 Channels 简介(golang channel长度和容量)

这篇文章重点介绍Channels(通道)在Go中的工作方式,以及如何在代码中使用它们。在Go中,Channels是一种编程结构,它允许我们在代码的不同部分之间移动数据,通常来自不同的goro...

Golang引入泛型:Go将Interface「」替换为“Any”

现在Go将拥有泛型:Go将Interface{}替换为“Any”,这是一个类型别名:typeany=interface{}这会引入了泛型作好准备,实际上,带有泛型的Go1.18Beta...

一文带你看懂Golang最新特性(golang2.0特性)

作者:腾讯PCG代码委员会经过十余年的迭代,Go语言逐渐成为云计算时代主流的编程语言。下到云计算基础设施,上到微服务,越来越多的流行产品使用Go语言编写。可见其影响力已经非常强大。一、Go语言发展历史...

Go 每日一库之 java 转 go 遇到 Apollo?让 agollo 来平滑迁移

以下文章来源于GoOfficialBlog,作者GoOfficialBlogIntroductionagollo是Apollo的Golang客户端Apollo(阿波罗)是携程框架部门研...

Golang使用grpc详解(golang gcc)

gRPC是Google开源的一种高性能、跨语言的远程过程调用(RPC)框架,它使用ProtocolBuffers作为序列化工具,支持多种编程语言,如C++,Java,Python,Go等。gR...

Etcd服务注册与发现封装实现--golang

服务注册register.gopackageregisterimport("fmt""time"etcd3"github.com/cor...

Golang:将日志以Json格式输出到Kafka

在上一篇文章中我实现了一个支持Debug、Info、Error等多个级别的日志库,并将日志写到了磁盘文件中,代码比较简单,适合练手。有兴趣的可以通过这个链接前往:https://github.com/...

如何从 PHP 过渡到 Golang?(php转golang)

我是PHP开发者,转Go两个月了吧,记录一下使用Golang怎么一步步开发新项目。本着有坑填坑,有错改错的宗旨,从零开始,开始学习。因为我司没有专门的Golang大牛,所以我也只能一步步自己去...