故障-因为MAC地址冲突造成的故障
1、问题分析与解决
1.1 症状与起因
问题症状: 访问卡慢,负载并不高
起因:
笔者有一部分物理机做了虚拟化,由于体量小就直接通过命令行工具创建,在创建时并没有通过kvm的clone命令,而是手工修改一些属性,所以就造成了产生了重复的MAC地址。
虽然问题是一个很low的问题,但是中间还是有许多反思地方,所以在这里记录一下。
2.2 排查与修复
在排查思路前,说一下角色:
- 目标虚拟机:192.168.100.30
- 搭载虚拟机的物理机:192.168.101.216
- 客户机器:192.168.100.21
- 冲突虚拟机:192.168.100.25
当时发现问题是SSH连接卡顿、慢,直接对SSH进行调优后无果,最终发现如果直接通过VNC连接目标虚拟机则没有影响,通过搭载虚拟机的物理机访问也没有影响,客户机器到搭载虚拟机的物理机访问也正常,这真的是难办了;随后拿出网络神器tcpdump直接进行抓包查看,抓包的思路如下:
- 客户机器抓包:主要查看数据包发出时间;
- 搭载虚拟机的物理机抓包:主要查看数据包转发情况;
- 目标虚拟机抓包:查看包接收情况;
抓包命令如下:
tcpdump ip host 192.168.100.30
最后发现异常,目标虚拟机比其他节点内机器慢2s,最终同步时间发现依然无果。
笔者之前遇到过,因配置同样IP的客户端造成网络抢占也会产生这样的原因,但是经过测试无果;当时顺着上面这个思路往下走IP不重复,那如果是MAC重复呢?
捕捉该网段内所有的存活主机的MAC地址,这里我使用Linux + nmap扫描的方式,nmap扫描如下:
[root@mdw ~]# nmap -sS 192.168.100.0/23
Starting Nmap 6.40 ( http://nmap.org ) at 2018-11-13 17:54 CST
..... 省略
然后通过过滤系统mac地址表,过滤目标问题主机的mac地址:
[root@mdw ~]# egrep "52:54:00:0c:1d:f5" /proc/net/arp
192.168.100.30 0x1 0x2 52:54:00:0c:1d:f5 * eth0
192.168.100.25 0x1 0x2 52:54:00:0c:1d:f5 * eth0
果然,是我们的mac地址冲突了。
2、理论分析与改善
2.1 为什么MAC地址冲突会造成这种问题?
摘录百度百科中MAC地址的作用:
谈起MAC地址,不得不说一下IP地址。IP地址工作在OSI参考模型的第三层网络层。两者之间分工明确,默契合作,完成通信过程。IP地址专注于网络层,将数据包从一个网络转发到另外一个网络;而MAC地址专注于数据链路层,将一个数据帧从一个节点传送到相同链路的另一个节点。
在一个稳定的网络中,IP地址和MAC地址是成对出现的。如果一台计算机要和网络中另一外计算机通信,那么要配置这两台计算机的IP地址,MAC地址是网卡出厂时设定的,这样配置的IP地址就和MAC地址形成了一种对应关系。在数据通信时,IP地址负责表示计算机的网络层地址,网络层设备(如路由器)根据IP地址来进行操作;MAC地址负责表示计算机的数据链路层地址,数据链路层设备(如交换机)根据MAC地址来进行操作。IP和MAC地址这种映射关系由ARP(Address Resolution Protocol,地址解析协议)协议完成 .............
每次看到这种专业术语我就头疼,把一个简单的事情用一大堆理论知识描述的晦涩难懂。那么我们可以试着这样理解比如日常生活中我们大家都会使用地图什么的APP, 当我们输入到达的目的地之后,地图会给出你的线路,我们可以理解为源IP地址与目标IP地址,这有和MAC地址有啥关系? 我们到达目的地是直接飞过去?并不是我们需要一个路线一个路线走,所以MAC地址可以表示下一个站点地址。
网络是一个域与域的组合产生的,而MAC地址通常用在网段内部使用;理论上MAC地址是不会冲突的,但是也存在个例,比如我们上面的情况。
理解了上面之后我们就可以理解为什么我们获取MAC只扫描当前网段了吧。所以当突然有两个MAC地址相同的站点我们的网络包就蒙了,你忽悠谁呢,所以有了后续的一系列问题。
2.2 反思改善
在KVM虚拟创建尽量使用工具来搞,但是非常情况下确实不允许,那么最好用MAC地址生成起来完成。
推荐一款在线的MAC生成器: http://www.ab126.com/web/2907.html
故障-因为MAC地址冲突造成的故障的更多相关文章
- 不是充许的静态以太网地址,它与vmware保留的mac地址冲突
不是充许的静态以太网地址,它与vmware保留的mac地址冲突 只需修改vxm文件即可. 第一部,打开vmw的镜像位置,如图. 点击后,打开硬盘,如下 把这个vmx结尾的文件下载,在本地编辑,可用tx ...
- CAN网络上新增加的设备与网络上已有设备MAC地址冲突的软件解决方案
已知 1号的CAN节点的地址是0x1f 2号的CAN 节点的地址是0x1f 要达到的要求是 假设 网络上 CAN1 节点已经工作了,我现在需要在网络上接入CAN2节点. 那么CAN2节点首次上电的时候 ...
- 自定义虚拟机MAC地址 | 它与 VMware 预留的 MAC 冲突 解法
https://blog.csdn.net/wangrui1573/article/details/82056020 问题:我想给VMware ESXi上的一台虚拟机分配一个静态的MAC地址.然而当我 ...
- 关于mac地址的一点感想
因为怕mac地址冲突导致环路影响,所以修改了本地设备的mac地址.地址修改为 77:77:77:00:22:11, 结果导致 wlan0 下发不下来. 查看配置选项/etc/config/wirele ...
- Linux 生成随机mac地址,并固化到本地
前言: 将Mac地址随机化并固化到本地可以有效避免同一个网络内,mac地址冲突导致的网络阻塞问题. 以下是有关的方法: 1.使用$RANDOM和md5sum(嵌入式无需移植其他软件的优秀可选方案) M ...
- 版本管理_svn_检出_更新_提交_本机 MAC 地址_冲突
版本管理 git svn [subversion] 实现集中式的版本控制工具软件 来源于最初的工程图纸. 需求: 备份还原 协同修改 权限控制 弊端:集中式(管理方便,但是如果中心服务器瘫痪,整个开发 ...
- 网络基本概念备忘:MAC地址,端口,HTTP状态码
MAC地址 英文MAC Address 英文全称: Media Access Control Address 别称:硬件位址 用途:定义网络设备位置 表示:十六进制数,6 Byte 特点:产品出产后M ...
- 【必看】局域网IP地址冲突罪魁祸首是谁?
开源Linux 长按二维码加关注~ 上一篇:一文详解FTP.FTPS与SFTP的原理 现如今,人们的生活处处离不开网络.企业办公信息化对网络的依赖则更大.为了提升安全管理和信息化水平,很多企业不仅建设 ...
- 怎么查询局域网内全部电脑IP和mac地址等信息?
在局域网内查询在线主机的IP一般比较简单,但局域网内全部电脑的IP怎么才能够查到呢?查询到IP后我还要知道对方的一些详细信息(如MAC地址.电脑名称等)该怎么查询呢??? 工具/原料 Windows ...
随机推荐
- 风炫安全web安全学习第三十六节课-15种上传漏洞讲解(一)
风炫安全web安全学习第三十六节课 15种上传漏洞讲解(一) 文件上传漏洞 0x01 漏洞描述和原理 文件上传漏洞可以说是日常渗透测试用得最多的一个漏洞,因为用它获得服务器权限最快最直接.但是想真正把 ...
- Spring的自动装配与依赖注入
Spring的自动装配与依赖注入 装配 = 创建Bean + 注入Bean 创建Bean 自动发现 显式注册Bean 注入Bean 基于配置的注入 自动注入 Spring的装配分为显式装配和隐式装配, ...
- maven 的安装与配置详细步骤
1. 直接搜索maven 2. 进入后点击download界面,这时出现的是当前最新版本, 当然还有以前的版本可供下载 3. 下载解压到你指定的目录后,需要配置一下环境变量. a. 右键此电脑点击属性 ...
- C语言------三目运算符(条件运算符)
今天在看C语言的时候看到了下面的代码(废话少说,直接上代码): #include <stdio.h> int main() {int max(); extern int A,B,C; // ...
- [工作札记]03: 微软Winform窗体中ListView、DataGridView等控件的Bug,会导致程序编译失败,影响范围:到最新的.net4.7.2都有
工作中,我们发现了微软.net WinForm的一个Bug,会导致窗体设计器自动生成的代码失效,这个Bug从.net4.5到最新的.net4.7.2都存在,一直没有解决.最初是我在教学工作中发现的,后 ...
- Windows安全加固
Windows安全加固 # 账户管理和认证授权 # 1.1 账户 # 默认账户安全 # 禁用Guest账户. 禁用或删除其他无用账户(建议先禁用账户三个月,待确认没有问题后删除.) 操作步骤 本地用户 ...
- 性能测试工具locust简单应用
简介 Locust是一种易于使用的分布式用户负载测试工具.可用于对网站(或系统)负载测试,并依据响应数据计算出系统支持的并发用户数. 安装及调试(以下操作在windows环境下进行) Locust基于 ...
- uni-app开发经验分享十七: 开发微信公众号(H5)JSSDK 的使用方式
因为这个jssdk被uni-app坑了好多天,作者说支持1.4版本,但是我用1.4的两个分享的新方法一直不支持. 最后只能放弃了,期待什么时候能更新上. 基本的使用方法:第一步 - 下载使用方式下载地 ...
- uni-app开发经验分享一: 多页面传值的三种解决方法
开发了一年的uni-app,在这里总结一些uni-app开发中的问题,提供几个解决方法,分享给大家: 问题描述:一个主页面,需要联通一到两个子页面,子页面传值到主页面,主页面更新 问题难点: 首先我们 ...
- rbd-db数据迁移至外部数据库
部署外部数据库 安装Docker export VERSION=19.03 && curl -fsSL http://rainbond-pkg.oss-cn-shanghai.aliy ...