为什么某些Mac地址如此频繁地重复?


12

我的应用程序查询运行它的客户端计算机的mac地址,并将其存储在服务器上。当我分析服务器数据库时,我发现某些mac地址重复了100-150次。即,不同无关组织中的不同客户端计算机具有相同的Mac。因此,某些mac地址非常“受欢迎”。它们也以某种方式出现在Google搜索结果中。例如58-2C-80-13-92-63。为什么会发生?

详细信息:我的应用程序在Windows上运行,客户端计算机属于不同的组织,并且位于不同的城市。我的应用程序连接到Web服务器,并在其中存储一些统计信息(例如,mac-addresses)。


1
当您查找它时,会出现“找不到供应商”错误-它是源自软件的MAC,可能是某种形式的内部NAT,可能来自您的路由器/ VPN /防火墙。
Chopper3

我猜他们的供应商管理不善?我曾经有一个D-Link路由器,该路由器的无线MAC为“ 01:23:45:67:89:ab” ...便宜。
Waleed Hamra

可能是虚拟设备配置,只需复制/粘贴而不更改MAC(可以使用xen的旧版本,这是可能的)
Dennis Nolte

好吧,即使使用Xen的新版本,也可以在创建VM NIC时不允许它生成新的MAC(例如,如果某人正在使用计算机模板)。如果仅使用virsh和不带随机化脚本的单个模板,则甚至可以使用libvirt进行此操作。
后台打印程序

Answers:


17

尤其是该示例(58-2C-80-13-92-63)是华为制造的USB以太网芯片。看起来他们很懒,正在重用MAC。来自Google的示例:

[50413.229125] cdc_ether 2-1:1.0: eth1: register 'cdc_ether' at usb-0000:00:1d.7-1, CDC Ethernet Device, 58:2c:80:13:92:63

[  122.660069] huawei_cdc_ncm 3-3:1.1 wwan0: register 'huawei_cdc_ncm' at usb-0000:00:14.0-3, Huawei CDC NCM device, 58:2c:80:13:92:63

其他情况也可能是虚拟机被传递的情况。但是(正如其他人所说的)最可能的解释是它是廉价的硬件。

为了解决这个问题,请检查MAC是否(标记为)全局唯一或本地管理:https : //en.wikipedia.org/wiki/MAC_address#Address_details

58:2c:80:13:92:63理论上的地址应该是全球唯一的:

0x58 → 1011000

但是来自VM(例如58:2c:80:13:92:63)的MAC 不会是:

0x52 → 1010010

其他示例:0C-5B-8F-27-9A-64、02-00-4C-4F-4F-50、36-4B-50-B7-EF-2D,02-0C-E7-0B-01- 02,00-16-76-C9-4E-DE。首先-看起来又像华为,应该是全球唯一的。(来自华为的人不担心局域网冲突吗?-serverfault.com/questions/462178/…)第二个是环回。其他人-我不知道到底是什么。第一个字节的第二个最低位显著可以是1或0。我唯一看到的-一般MAC独特性是一个神话:((即使它们不是通过编程设置)。
麦克Siomkin

另一个奇怪的是,我过滤了代码中的回送:if (adapter.NetworkInterfaceType == NetworkInterfaceType.Tunnel || adapter.NetworkInterfaceType == NetworkInterfaceType.Loopback || adapter.NetworkInterfaceType == NetworkInterfaceType.Unknown) continue;
Mike Siomkin

-2

您只能在本地网络中看到不同的mac地址。当IP数据包通过路由器时,源主机的MAC地址将更改为路由器输出接口的MAC地址。这就是为什么您可以看到许多具有相同Mac地址的IP地址(女巫不是来自本地网络)的原因。


不,这不是它的工作方式,这些是不同的OSI层。如果远程IP通过路由器到达您,则仅将路由器的(本地)IP与该MAC关联。我可以想象一个非常奇特的设置,路由器将尝试像连接互联网(谁真的想要这样的东西?)那样去做,但是这样的野兽甚至都行不通,而且肯定不会掩盖所有背后的东西单个MAC
Hagen von Eitzen

你是对的。有不同的OSI层。但是路由器会在低以太网层上获取数据包,然后决定如何在IP层上处理此数据包,然后再次将其发送到低以太网层上的下一个目标。这就是为什么路由器使用自己的mac地址发送数据包的原因。物理以太网层上没有任何路由协议。
米哈伊尔·基尔吉

实际上,IS-IS是一种在以太网层上运行的路由协议。但是无论如何,系统永远不会将网关以外的机器报告为具有网关的MAC地址。
MikeyB


1.如我所说,我从不同城市的客户端(而不是从一个局域网)获得相同的Mac!2.我的桌面客户端应用程序查询运行该计算机的适配器的mac,然后使用SOAP Web服务将其发送到服务器。因此,它不能是路由器的Mac。
Mike Siomkin '17年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.