MAC地址

MAC地址

MAC地址(Media Access Control),即媒体访问控制地址,在不同的使用场景下有不同的别名,比如局域网地址(LAN Address),以太网地址(Ethernet Address),物理地址(Physical Address),硬件地址(Hardware Address)等。

MAC地址作用于数据链路层,用来在局域网中唯一标识一个网络设备接口。网络设备制造商在生产时会根据规则将全球唯一的MAC地址烧录到硬件中。

MAC地址格式

MAC地址的长度为6字节,48比特。除去组播的,本地的MAC地址,差不多还有70万亿个地址可以使用,随便用。

MAC地址一般用冒分十六进制表示,比如58:A0:23:27:B6:31。6字节长的MAC地址可以划分为两部分,前3字节为oui(organizationally unique identifier),为IEEE的注册管理机构统一分配(出售)给各个网络设备生产商的编码。后3字节就由拥有该oui的厂家自己分配了。每一个oui可以对应1400w+的MAC地址,大公司往往拥有成百上千个oui,比如去oui与厂商对应表搜索一下huawei就可以得到上千条结果。

MAC地址的第1个字节中还有两个标志位,b0位表示单播地址还是组播地址(unicast/multicast),b1位表示全局地址还是本地地址(global/local)。

广播MAC地址ff:ff:ff:ff:ff:ff算是特殊的组播地址。本地MAC地址一般用于系统随机生成MAC地址。

查看MAC地址

环境为centos7,可以使用ip link查看网络设备的信息,其中包括了MAC地址。

[rc@localhost work]$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:26:36:6b brd ff:ff:ff:ff:ff:ff

里面的link/ether后面跟的就是MAC地址。

修改MAC地址

在一些场景,比如不希望暴露自己的真实MAC地址,或者MAC地址被网络管理员限制了。那么可以手动去修改MAC地址。只需要保证你的MAC地址在局域网内唯一就行。

可以用ip link set DEVICE address LLADDR命令临时修改网卡的MAC地址,这里我们将ens33网卡的MAC地址最后一位由6b改为6c

[rc@localhost ~]$ ip link show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:26:36:6b brd ff:ff:ff:ff:ff:ff
[rc@localhost ~]$ sudo ip link set ens33 address "00:0c:29:26:36:6c"
[sudo] rc 的密码:
[rc@localhost ~]$ ip link show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:26:36:6c brd ff:ff:ff:ff:ff:ff

这一修改是临时的,只要系统重启,或者网卡重启就恢复原来的MAC地址了(重启网卡要注意啊,关闭网卡远程连接就断了~)。可以用重启网络服务的形式,内核还会保留网络栈,这里重启网络服务后MAC地址又复原了。

[rc@localhost ~]$ ip link show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:26:36:6c brd ff:ff:ff:ff:ff:ff
[rc@localhost ~]$ sudo systemctl restart network
[rc@localhost ~]$ ip link show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:26:36:6b brd ff:ff:ff:ff:ff:ff

参考资料

posted @ 2022-09-24 13:10  HachikoT  阅读(893)  评论(0编辑  收藏  举报