按通常的方法,终端获取MAC地址后再在服务器端进行绑定,或者是利用“MAC扫描器”远程批量获取MAC地址,对于网管员来说工作量都非常大。经过一些思考和实验,发现组合使用“MAC扫描器”和Excel 2000可以很好地解决这个问题:首先运行“MAC扫描器”,扫描完成后,点击,完成数据导入。 图3 2. 利用Excel处理数据 在A列前插入一列,在A1单元格内输入绑定MAC地址的命令和参数“ARP -S”,在MAC地址和计算机名两列之间插入7列,列号依次为D、E、F、G、H、I、J。利用字符串函数分割12位MAC地址为两两一组: 在D1单元格输入“=left(C1,2)”; 在E1单元格输入“=mid(C1,3,2)”; 在F1单元格输入“=mid(C1,5,2)”; 在G1单元格输入“=mid(C1,7,2)”; 在H1单元格输入“=mid(C1,9,2)”; 在I1单元格输入“=right(C1, 2)”。 在J1单元格内把D1——I1单元格的内容合并起来,中间用减号分隔。合并方法:在J1 内输入“=D1&&”-“&&E1&&”-“&&F1&&”-“& &G1&&”-“&&H1&&”-“&&I1”。利用填充法完成A列和D——J列的数据处理(图4)。并隐藏C——I列。 图4 3. 制作批处理文件 复制Excel工作表A、B、J列的数据,粘贴到记事本中。保存工作簿“MAC地址表。xls”,退出Excel,保存记事本文件为Mac.bat。 4. 批量绑定MAC地址和IP地址 在服务器端DOS模式下运行Mac.bat,即可完成批量MAC地址和IP地址的绑定。
来走一个
public static void main(String args) throws UnknownHostException,SocketException{ InetAddress inetAddress = InetAddress.getLocalHost(); //获取网卡,获取地址 byte mac = NetworkInterface.getByInetAddress(inetAddress).getHardwareAddress(); StringBuffer sb = new StringBuffer(""); for (int i = 0; i 《 mac.length; i++){ if (i != 0){ sb.append("-"); } //字节转换为整数 int temp = mac & 0xff; String str = Integer.toHexString(temp); if (str.length() == 1){ sb.append("0" + str); }else{ sb.append(str); } } System.out.println("本机MAC地址:" + sb.toString().toUpperCase()); }
输出:
本机MAC地址:B8-88-E3-FA-03-39
IPv6根据MAC地址自动生成接口地址是属于IEEE EUI-64标准x0dx0a具体介绍:x0dx0ax0dx0aEUI-64x0dx0aIEEE EUI-64地址表示有一个用于网络接口寻址的新标准。x0dx0a x0dx0a在IPV6中,无状态自动配置机制使用EUI-64格式来自动配置IPV6地址x0dx0a无状态自动配置是指在网络中没有DHCP服务器的情况下,允许节点自动配置IPV6地址的机制。x0dx0a x0dx0aEUI-64的构造规则--根据接口的MAC地址再加上固定的前缀来生成一个IPV6的地址x0dx0a x0dx0a工作原理:自动将48bit的以太网MAC地址扩展成64bit,再组合一个64位的ipv6地址前缀,组成一个IPV6地址。(link-local 地址也是依据此原理)x0dx0a x0dx0a注:对于以太网链路的接口即用自己的MAC地址,对于串口链路和loopback接口会借用设备的以太网口(接口号最小的比如有F0/0,F0/1,那么默认都借用F0/0接的MAC地址)的mac地址进行组合。x0dx0a转换过程原理:x0dx0a1、对于一个MAC地址,由两部分组成,24位的公司的ID(由IEEE唯一分配),24位公司的扩展ID(公司自己编制),联合产生全球唯一的48位MAC地址(也称IEEE 802地址),如下:x0dx0a x0dx0accccccUG cccccccc cccccccc xxxxxxxx xxxxxxxx xxxxxxxxx0dx0a| 24位IEEE分配 || 24位厂商自己编制 |x0dx0a x0dx0a注:第一字节的第7位称为U/L位,表示此地址是全球管理还是本地管理。如果为0就为全球管理,为1就为本地管理。x0dx0a第一字节第8位称为I/G为,表示此地址是单播地址还是组播地址。如果为0就为单播地址,为1就为组播地址。x0dx0a x0dx0a2、先将此48位MAC地址公司ID和公司扩展ID之间插入特定16位值0xFFFE,形成64位的EUI-64地址,如下:x0dx0accccccUG cccccccc cccccccc 11111111 11111110 xxxxxxxx xxxxxxxx xxxxxxxxx0dx0a| 24位IEEE分配 | FFFE | 24位厂商自己编制 |x0dx0a x0dx0a3、再将EUI-64地址的第一字节第7为反转,形成IPV6地址的接口ID,加之IPV6前缀形成完整的IPV6地址。x0dx0a x0dx0a4、实例:x0dx0aa,MAC地址为 00-AA-00-3F-2A-1Cx0dx0ab,转换EUI-64为 00-AA-00-FF-FE-3F-2A-1Cx0dx0ac,第一个字节为0000 0000,第7为反转为0000 0010转换16进制为0x02。x0dx0ad,得到结果为02-AA-00-FF-FE-3F-2A-1C,转换为ip6表示格式为2AA:FF:FE3F:2A1C
《%strIP = Request.Servervariables("REMOTE_ADDR") strMac = GetMACAddress(strIP)%》asp的获得方法。
代码如下,仅供参考: // MAC.cinclude《stdio.h》include《stdlib.h》include《time.h》include《unistd.h》 define RANDOM(x) (rand()%x)define MAC_ADDR_LENGTH 12define FMT_MAC_ADDR_LEN (MAC_ADDR_LENGTH+5) unsigned char HEXCHAR={’0’,’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,’A’,’B’,’C’,’D’,’E’,’F’};unsigned char genMACAddr;unsigned char fmtMACAddr={’0’,’0’,’-’,’0’,’0’,’-’,’0’,’0’,’-’,’0’,’0’,’-’,’0’,’0’,’-’,’0’,’0’};void formatMACAddr(){ unsigned short i=0; unsigned short n=0; for(i=0;i《MAC_ADDR_LENGTH;i++,n++) { if(fmtMACAddr!=’-’) { fmtMACAddr; } else { n++; fmtMACAddr; } }} void main(){ unsigned short i=0; unsigned short n=0; srand(getpid()); for(int i=0;i《MAC_ADDR_LENGTH;i++) { n=RANDOM(16); genMACAddr; } formatMACAddr(); printf("%s",fmtMACAddr);}
如果是随意一个mac地址,那么生成6个0~255之间的随机数就可以了。
void random_mac(char *mac){ srand(time(NULL)); int i; for(i = 0; i 《 6; i++) { sprintf(mac+i*3, "%02X:", rand()&(0xff)); } mac = 0;}
MAC(Media Access Control, 介质访问控制)MAC地址是烧录在Network Interface Card(网卡,NIC)里的.MAC地址,也叫硬件地址,是由48比特长(6字节),16进制的数字组成.0-23位是由厂家自己分配.24-47位,叫做组织唯一标志符(organizationally unique ,是识别LAN(局域网)节点的标识。其中第40位是组播地址标志位。网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM(一种闪存芯片,通常可以通过程序擦写),它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。也就是说,在网络底层的物理传输过程中,是通过物理地址来识别主机的,它一般也是全球唯一的。比如,著名的以太网卡,其物理地址是48bit(比特位)的整数,如:44-45-53-54-00-00,以机器可读的方式存入主机接口中。以太网地址管理机构(除了管这个外还管别的)(IEEE)(IEEEE:电气和电子工程师协会)将以太网地址,也就是48比特的不同组合,分为若干独立的连续地址组,生产以太网网卡的厂家就购买其中一组,具体生产时,逐个将唯一地址赋予以太网卡。形象的说,MAC地址就如同我们身份证上的身份证号码,具有全球唯一性
双openwrt路由器冲突问题1.检查你的路由器ip地址是否与光猫ip地址冲突2.检查你的两个路由器的ip地址是否冲突3.检查你路由器mac是否冲突,无线mac和lan,wan口mac地址是否与其它设备冲突, 修改mac地址建议使用mac地址生成器里的mac地址,修改好mac地址,把固件恢复出厂设置后生效.4.如果一级路由器访问二级路由器情况下,无法访问二级路由器的时候,需要在一级路由器上设置好静态ip后,二级路由器才可以正常访问
sed -i ’s@iface eth0 inet static@pre-up ifconfig eth0 hw ether ’$MAC’@g’ grep -rl "iface eth0 inet static" /etc/network/interfaces 有一批ARM板出来全都是同一个MAC地址: 08:00:27:00:01:92 这就导致获取的IP都是一样的,需要让他们启动后获取各自不一样的IP,因此每个板子都需要获得其自己的MAC地址(后三个BYTE区分身份): "08:00:27:XX:XX:XX" 用shell脚本来实现随机的MAC。 Printf random mac by 4 commands : Target: demo: /etc/init.d/network.sh, 添加配置的实现: Github地址: https://github.com/kumataahh
推发布温馨提示: