介质访问控制地址已经出现一段时间了。最初每个网络接口有一个***的、由12字母和数字(0-9,A-F)所组成的MAC地址,格式为XX:XX:XX:XX:XX:XX。每家制造商分配的前六位地址序列各不相同,每个网络设备后六位的组合也是***的。
上述系统确保了世界上所有的网络设备都有***的MAC地址,这有别于最终用户通常会进行分配或更改的IP地址。
现在,大多数人并不会进一步考虑虚拟机的MAC地址,因为虚拟机的MAC地址是在创建时自动生成的。无论你使用的是哪种虚拟化平台,使用的都是相同的MAC地址生成规则。前六位字符表示制造商(例如VMware或微软)名称,接下来的六位字符是随机生成的。不同的平台都有各自的产生随机地址的规则,但存在一些情况那就是两台虚拟机的MAC地址完全一样。当上述情况出现时就意味着MAC地址重复了。
MAC地址重复最为常见的原因就是客户端克隆。P2V以及V2V拷贝通常会保留尽可能多的设置,包括MAC地址。这不会有什么问题,除非你想同时保留同一网络中的源以及副本。
那么,重复的MAC地址将会带来什么问题呢?
不必对该问题进行深入的研究,MAC地址位于OSI七层模型的第二层。地址解析协议ARP用于建立IP地址与MAC地址的对应关系,而且在大多数网络设备上你可以看到已缓存的ARP表。
同一网络上的网络设备通过MAC地址进行通信。通信过程是通过在当前子网中广播请求并得到特定设备的回应或者检查每个ARP表的本地ARP缓存来实现的。在网络中进行初始广播后会生成ARP表,使网络通信更为便利。
在Windows服务器上,你可以在命令行提示符下输入arp -a命令查看ARP表。
在使用ARP表时,会发送网络流量与IP地址进行匹配而不会进行进一步的检查。当流量在设备之间来回发送却没有到达目标设备时可能会导致网络环路以及网络超时。
在Windows下你可以使用ipconfig /all命令查看正在使用的MAC地址。
在Hyper-V或者VMware上更改虚拟机MAC地址很容易。在虚拟机属性对话框中,在硬件选项下的网络适配器子项下可以请清晰地看到当前的MAC地址。你可以将选项更改为手动(VMware)或动态(Hyper-V)并为该虚拟机输入一个不同的MAC地址。
在微软系统中心虚拟机管理器中查看Hyper-V虚拟机属性
调整VMware虚拟机属性
我建议在同一个网络中检查ARP表以确保你分配的新MAC地址还没有用到。
请记住你可能需要清除一直存在问题的设备上(包括交换机和路由器)的ARP缓存。在Windows下,你可以使用arp -d * 命令彻底清空本地缓存。