按照国际标准,不管是电脑还是各类小产品的网口,都会有固定的MAC地址,所以设置随机的MAC地址,这是不合法的,只能做测试使用;
linux启动之后,一般会在/etc/init.d目录下的某个文件启动网络
如果网卡已经启动,设置MAC地址需要重启网卡,所以我直接在启动网卡前设置MAC地址,然后启动网卡即可;
生成随机数RANDOM,然后截取6位作为MAC的后3个字节
#!/bin/sh
#产生随机MAC地址
MACADDR=$(echo 0090e6`echo -n $RANDOM | md5sum | sed 's/\(..\)/&/g' | cut -c1-6`)
echo "Starting network..."
ifconfig eth0 hw ether $MACADDR
/sbin/ifup -a
值得注意的是:MAC地址的第一个字节必须是偶数,因为第47bit,这一位表示MAC地址是全球唯一地址还是本地地址,0表示全球唯一地址,1表示本地唯一地址,这一位也叫G/L位;
对我们嵌入式开发板来说,网络设备上的是固化的MAC地址,因为它唯一标识这个设备,所以只能是单播地址,这一位必须是0,所以第一个字节得是偶数。
如果局域网内(可以是路由或交换机)存在两个相同MAC地址的两个客户机,则服务器与这两个客户机收发数据时,单个客户机会存在丢包现象。