先看一下真实世界的MAC地址是如何分配,如何保证没有重复的。
每块网卡都有一个MAC地址,MAC地址是一个6字节、也即48bit的数据。前3字节称为OUI ,是由IEEE组织注册给网络设备生产商的;每个厂商拥有一个或多个OUI,彼此不同。后三字节则是由网络设备生产商分配给自己生产的每一个拥有MAC地址的设备,互不重复。
在VM的世界中,每一台拥有虚拟NIC(网卡)的设备当然也拥有MAC地址。这虚拟网卡的MAC地址,当然也是按照规定,前三字节为OUI,后三字节逐一分配给每个设备。
由于虚拟网卡的”制造商“是VMware,XenSource, 等虚拟平台软件的生产商,OUI当然就分配给了他们。

VMware VM所使用的OUI

按照VMware ESX 3的[Server Configuration Guide ]的说法,VMware的使用下面的三个OUI作为VM的MAC地址:

  • 00:0C:29 – 用于自动生成的MAC地址
  • 00:50:56 – 用于手动设置的MAC地址
  • 00:05:69 – 曾经用于旧版本的VM(大约是在ESX 1.5的时代),在ESX 3中已经不再使用

但是在实际应用上,我发现00:50:56这一MAC地址段并不是完全用于手动设置的MAC地址:

  • 00:50:56:00:00:00 – 00:50:56:3F:FF:FF
    这一段MAC地址可以用于手动设置的MAC地址
  • 00:50:56:40:00:00 – 00:50:56:FF:FF:FF
    这一段(我的推测,不一定准确),则是用于ESX 3上的自动生成的MAC地址(包括VM和Service Console)

MAC地址的生成

OUI有了,后三字节如何生成呢?要知道虚拟机是经常被创建和销毁的,这一点不像实体PC。网卡生产商可以计算每年生产多少块网卡,从而为每块网卡分配不同的MAC地址; VMware却不可能计算出每年有多少台VM、有多少块虚拟网卡被创建。

VMware ESX Server的算法是,使用散列算法,通过VM的UUID来生成MAC地址。VM的UUID是每一台VM特有的、128bit的ID,是由ESX
Server硬件SMBIOS的UUID、加上VM的路径生成的。因此,一台虚拟机的虚拟网卡的MAC地址就与下面四个因素有关:

  • VMware的OUI
  • Host (ESX Server)的SMBIOS中的UUID
  • VM在服务器上的路径
  • 网卡的实体名 (Entity Name),用来确保同一VM上的不同网卡有不同的MAC地址

MAC地址冲突的检测与解决

MAC地址一旦生成,就不会再有变化,除非上面所述的四项因素发生改变(最可能发生的就是第三项,VM在服务器上的路径改变)。
尽管如此,由于散列算法本身的特征,还是有万一发生MAC地址冲突的可能(可能性极小,和年末ジャンボ中头彩的几率差不多)。ESX
Server会不断跟踪和检测运行中和挂起(Suspend)的VM,以保证没有MAC地址冲突。但是已经关闭电源的VM是不在检查对象之内的。
因此,万一一台VM启动时ESX检测到MAC地址冲突,它会分配给VM的虚拟网卡一个新的MAC地址。所以从这个意义上说,VM的MAC地址是可能发生变化的——只是这个概率实在太小。

手动指定MAC地址

手动指定MAC地址仅用于一些极其特殊的情况,通常是进行P2V的时候。例如,某物理服务器上的软件,其License已经与该服务器的MAC地址
绑定,如果MAC地址改变则软件无法运行;再如,某些底层网络软件以MAC地址来鉴别机器时,为了不做更改能够继续使用,在P2V的时候也要手动指定
MAC地址。
打开一个VM的.vmx文件,可以看到如下设置:(如果有多块NIC的话,那么就会有ethernet0、ethernet1、ethernet2……)

ethernet0.addressType = "generated"
ethernet0.generatedAddress = "00:0c:29:9b:fb:18"

这说明该NIC是自动生成的MAC地址。只需如下更改即可变为手动分配的MAC地址:

ethernet0.addressType = "static"
ethernet0.address = "00:50:56:00:00:01"

其中的00:50:56:00:00:01就是手动指定的MAC地址。

转载于:​​​​​​虚拟机的MAC地址分配与修改 | MAC地址

虚拟机MAC地址的分配与修改相关推荐

  1. 修改虚拟机MAC地址的方法

    修改虚拟机MAC地址的方法 有时在使用虚拟机时,需要修改虚拟网卡的MAC地址,如果只是需要做普通的修改,可以进入操作系统后用很多种办法做到,但是如果要从根本上修改就没那么容易了(物理网卡需要用用编程器 ...

  2. esxi改mac地址_ESXI克隆CentOS修改MAC地址

    报错信息:Device eth0 does not seem to be present, delaying initialization 故障背景: 在ESX中了完全克隆了一个已经存在的CentOS ...

  3. 服务器怎么修改mac地址怎么办,服务器如何修改MAC地址

    服务器如何修改MAC地址 内容精选 换一换 建议不要在分析任务执行过程中卸载,否则可能出现异常.IDE插件只支持以Web模式卸载工具,不支持以CLI模式卸载工具.没有正在运行中的任务.确认卸载:输入y ...

  4. 派克斯宽带不能同时登录如何更改VM虚拟机mac地址

    有很多客户有许多设备的时候,会用虚拟机来代替一台台电脑设备,在虚拟机里面安装使用派克斯软件,也有很多客户为了节省时间都会选择克隆虚拟机,这样就会导致信息会完全一致,连接宽带的时候会出现只能连接一个的情 ...

  5. KVM虚拟机MAC地址冲突,引发服务器对xshell说:Go away!

    开场白 最近在机房的服务器上装kvm虚拟主机. 不经意间,上演了一场由MAC地址异常而引发的服务器与xshell之间的血案! 问题描述 在一台服务器上装了两个虚拟机,其中一台是从另一台上克隆的.克隆的 ...

  6. vmware虚拟机mac地址冲突解决方法

    1.将虚拟机关机(可以先做一个关机快照) 2.找到虚拟机目录的vmx文件(建议拷贝一份到其它目录做个备份,因为下面会修改该文件),使用记事本打开,找到以下内容: ethernet0.generated ...

  7. Android 蓝牙 MAC 地址的读取和修改

    蓝牙地址的 NV 项是 447 项,蓝牙地址一般从 NV 读取,所以连接上 QXDM,修改 NV447 项就可以修改蓝牙的MAC地址. 最近在高通 QCM6125 平台上,通过 QXDM 修改 BT ...

  8. linux内核设置mac地址,Linux下如何修改网卡MAC地址

    Red Hat Linux下如何修改网卡MAC地址 OS版本:Red Hat Enterprise Linux AS4 核心:Kernel 2.6.9-42 网上有很多关于linux下修改MAC地址的 ...

  9. 两台linux虚拟机mac地址冲突

    WMware Workstation出现mac地址冲突,具体的报错信息如下: [现象] Adapter 'Ethernet1' may not have network connectivity.MA ...

最新文章

  1. JVM垃圾回收算法 总结及汇总
  2. matlab怎么在c 中调用,在C中调用Matlab (转)
  3. Delphi中预想不到的代码楼主zswang(伴水清清)(专家门诊清洁工)2002-05-16 14:20:38 在 Delphi / VCL组件开发及应用 提问
  4. 从iOS应用中,启动一个Unity App
  5. 汇编语言 用push指令将a段中的前8个字形数据,逆序存储到b段中
  6. 在Spring Boot中使用切面统一处理自定义的异常
  7. POJ 1064 分割线缆(二分查找)
  8. 20w7珠led驱动电源电路图_LED驱动电源:用TL431做的几个恒流电路分享!
  9. filebeat + logstash 发送日志至kafka 入门
  10. Memcached概述
  11. 【linux系统编程】剖析shell运行原理
  12. 推荐系统评价指标综述
  13. Shell脚本编程之(七)Shell脚本的追踪与debug
  14. 前端网页发布到nginx_通过nginx部署前端代码实现前后端分离
  15. 201521123097《Java程序设计》第五周学习总结
  16. 重定向与请求转发的区别
  17. python之window下安装python2版的pyv8库 (window install python2 pyv8)
  18. python中match方法_Python3.9.1中如何使用match方法?
  19. 用 Python 切换输入法
  20. 高德地图之逆地理编码

热门文章

  1. webgl绘制图形API——drawArrays、drawElements
  2. 众昂矿业刘金海:多彩萤石成为矿物收藏界的挚爱
  3. Revitalizing CNN Attentions via Transformers in Self-Supervised Visual Representation Learning
  4. Win系统 - SSD
  5. 【数据结构】文件压缩项目
  6. [BZOJ3637][LCT]Qtree6
  7. 中集集团全球港航人工智能独角兽中集飞瞳,全球最先进港航人工智能AI核心技术及工业级产品,新一代人工智能港口智能化船公司智能化方案
  8. 金橙子软件不锈钢打黑_什么是锈? 安全,快速,简便的软件开发
  9. 权重叠加是这样计算的
  10. 2018AI行业地图丨CB Insights:这100家AI初创公司募资额超百亿