简介
MAC 地址百度百科
MAC地址也叫物理地址、硬件地址,由网络设备制造商生产时烧录在网卡(Network lnterface Card)的EPROM(一种闪存芯片,通常可以通过程序擦写)。IP地址与MAC地址在计算机里都是以二进制表示的,IP地址是32位的,而MAC地址则是48位的 [3] 。
MAC地址的长度为48位(6个字节),通常表示为12个16进制数,如:00-16-EA-AE-3C-40就是一个MAC地址,其中前3个字节,16进制数00-16-EA代表网络硬件制造商的编号,它由IEEE(电气与电子工程师协会)分配,而后3个字节,16进制数AE-3C-40代表该制造商所制造的某个网络产品(如网卡)的系列号。只要不更改自己的MAC地址,MAC地址在世界是唯一的。形象地说,MAC地址就如同身份证上的身份证号码,具有唯一性 [3] 。
Linux Shell 命令生成随机 MAC 地址
__create_mac() {
for ((i = 0; i < $1; i++)); do
openssl rand -hex 5 | sed -e 's/^\(..\)\(..\)\(..\)\(..\)\(..\).*$/88:\1:\2:\3:\4:\5/'
done
}
__create_mac 10
示例
[root@lwmacct ~]# __create_mac() {
> for ((i = 0; i < $1; i++)); do
> openssl rand -hex 5 | sed -e 's/^\(..\)\(..\)\(..\)\(..\)\(..\).*$/88:\1:\2:\3:\4:\5/'
> done
> }
[root@lwmacct ~]# __create_mac 10
88:c4:85:e8:2e:f9
88:91:02:50:8e:a8
88:67:49:66:fb:30
88:dd:31:a1:00:6a
88:7f:ac:db:08:b8
88:3d:ef:38:19:f6
88:e0:e8:88:be:f0
88:d8:36:6f:e8:ce
88:b7:fe:05:33:b1
88:b3:ba:b8:ae:90
[root@lwmacct ~]#
MAC 地址的前三个字节是 OUI(Organizationally Unique Identifier),用于标识硬件设备的生产厂商。在 OUI 中,第一个字节的最高位是0,其余7位是由 IEEE 分配给不同厂商的标识符。因此,第一个字节的取值范围是 00-7F。
在这个范围内,有少量的 OUI 被保留不分配,因为它们有特殊的含义。这些 OUI 的第二个字节是固定的,因此不能被用于生成随机的 MAC 地址。这些保留的 OUI 包括:
- 01-80-C2: Spanning Tree Protocol
- 01-00-5E: IPv4 multicast
- 33-33: IPv6 multicast
- 09-00-07: AppleTalk
- 00-03-FF: Microsoft
- 00-05-73: IBM
- 00-50-F2: Cisco Systems
- 00-0D-93: Hewlett-Packard
- 00-16-36: Xensource, Inc.
因此,在生成随机的 MAC 地址时,需要避免使用这些 OUI。