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地址冲突造成的故障的更多相关文章

  1. 不是充许的静态以太网地址,它与vmware保留的mac地址冲突

    不是充许的静态以太网地址,它与vmware保留的mac地址冲突 只需修改vxm文件即可. 第一部,打开vmw的镜像位置,如图. 点击后,打开硬盘,如下 把这个vmx结尾的文件下载,在本地编辑,可用tx ...

  2. CAN网络上新增加的设备与网络上已有设备MAC地址冲突的软件解决方案

    已知 1号的CAN节点的地址是0x1f 2号的CAN 节点的地址是0x1f 要达到的要求是 假设 网络上 CAN1 节点已经工作了,我现在需要在网络上接入CAN2节点. 那么CAN2节点首次上电的时候 ...

  3. 自定义虚拟机MAC地址 | 它与 VMware 预留的 MAC 冲突 解法

    https://blog.csdn.net/wangrui1573/article/details/82056020 问题:我想给VMware ESXi上的一台虚拟机分配一个静态的MAC地址.然而当我 ...

  4. 关于mac地址的一点感想

    因为怕mac地址冲突导致环路影响,所以修改了本地设备的mac地址.地址修改为 77:77:77:00:22:11, 结果导致 wlan0 下发不下来. 查看配置选项/etc/config/wirele ...

  5. Linux 生成随机mac地址,并固化到本地

    前言: 将Mac地址随机化并固化到本地可以有效避免同一个网络内,mac地址冲突导致的网络阻塞问题. 以下是有关的方法: 1.使用$RANDOM和md5sum(嵌入式无需移植其他软件的优秀可选方案) M ...

  6. 版本管理_svn_检出_更新_提交_本机 MAC 地址_冲突

    版本管理 git svn [subversion] 实现集中式的版本控制工具软件 来源于最初的工程图纸. 需求: 备份还原 协同修改 权限控制 弊端:集中式(管理方便,但是如果中心服务器瘫痪,整个开发 ...

  7. 网络基本概念备忘:MAC地址,端口,HTTP状态码

    MAC地址 英文MAC Address 英文全称: Media Access Control Address 别称:硬件位址 用途:定义网络设备位置 表示:十六进制数,6 Byte 特点:产品出产后M ...

  8. 【必看】局域网IP地址冲突罪魁祸首是谁?

    开源Linux 长按二维码加关注~ 上一篇:一文详解FTP.FTPS与SFTP的原理 现如今,人们的生活处处离不开网络.企业办公信息化对网络的依赖则更大.为了提升安全管理和信息化水平,很多企业不仅建设 ...

  9. 怎么查询局域网内全部电脑IP和mac地址等信息?

    在局域网内查询在线主机的IP一般比较简单,但局域网内全部电脑的IP怎么才能够查到呢?查询到IP后我还要知道对方的一些详细信息(如MAC地址.电脑名称等)该怎么查询呢??? 工具/原料 Windows ...

随机推荐

  1. C语言-表达式和运算符

    表达式:表达式是c语言的主体,在c语言中,表达式由操作符和操作数组成.简单的表达式可以只有一个操作数.根据操作符的个数,可以将表达式分为简单表达式和复杂表达式,简单的表达式只含有一个操作符(如:5+5 ...

  2. Vue3.0聊天室|vue3+vant3仿微信聊天实例|vue3.x仿微信app界面

    一.项目简介 基于Vue3.0+Vant3.x+Vuex4.x+Vue-router4+V3Popup等技术开发实现的仿微信手机App聊天实例项目Vue3-Chatroom.实现了发送图文表情消息/g ...

  3. MongoDB备份(mongoexport)与恢复(mongoimport)

    1.备份恢复工具介绍: mongoexport/mongoimport mongodump/mongorestore(本文未涉及) 2.备份工具区别在哪里? 2.1 mongoexport/mongo ...

  4. nginx: [emerg] bind() to 0.0.0.0:80 failed (10013:

    问题出现 今天在win10安装nginx时候,启动nginx.exe时在dos窗口出现了这个错误,特此记录一下. 解决方法 上面报错信息的意思大概是:0.0.0:80地址访问不被允许.可能是80端口号 ...

  5. python_字典(dict)

    dict 一.结构: info = { "key":"value", "key":"value" } print(inf ...

  6. Centos 6.5 Rabbitmq 安装和集群,镜像部署

    centos 6.5 rabbitmq 安装和集群,镜像部署 安装erlang: yum install gcc glibc-devel make ncurses-devel openssl-deve ...

  7. 【Spring】Spring中的Bean - 3、Bean的作用域

    Bean的作用域 简单记录-Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)-Spring中的Bean 通过Spring容器创建一个Bean的实例时,不仅可以完成 ...

  8. MyBatis初级实战之三:springboot集成druid

    OpenWrite版: 欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kuber ...

  9. ctfhub技能树—web前置技能—http协议—Cookie

    打开靶机环境 查看显示内容 根据提示,需要admin登录才能得到flag 题目介绍为Cookie欺骗.认证.伪造 介绍一下cookie和session 一.cookie: 在网站中,http请求是无状 ...

  10. QQ好友状态,QQ群友状态,究竟是推还是拉? 网页端收消息,究竟是推还是拉?

    https://mp.weixin.qq.com/s/KB1zdKcsh4PXXuJh4xb_Zw 网页端收消息,究竟是推还是拉? 原创 58沈剑 架构师之路 2020-12-28   https:/ ...