一、为何要改mac地址?
比如我们替换损坏网卡后需还原原MAC,维持IP分配、防火墙策略及设备认证;还有一些虚拟化管理,避免虚拟机克隆导致的MAC冲突。
当然对于隐私保护方面也会是经常需要修改mac地址的,比如防设备追踪,在公共WiFi等场景阻止基于MAC的行为监控(如机场/咖啡馆),还有一些运营商对免费网络的MAC地址使用时长限制,你懂的。
下面小哥将详细的介绍Linux下的三种设置方式:临时设置 、基于systemd的永久设置 以及基于SystemV的永久设置。
二、临时设置方法
适用于快速测试或临时变更,系统重启后恢复原地址也就是临时的配置失效了。
1. 使用ip命令
这是比较常用的命令:
# 关闭网卡
sudo ip link set dev eth0 down
# 设置新MAC地址(示例:00:11:22:33:44:55)
sudo ip link set dev eth0 address 00:11:22:33:44:55
# 启用网卡
sudo ip link set dev eth0 up
# 验证结果
ip link show eth0
2. 使用传统ifconfig命令
sudo ifconfig eth0 down
sudo ifconfig eth0 hw ether 00:11:22:33:44:55
sudo ifconfig eth0 up
ifconfig eth0
三、永久设置方法(SystemV系统)
适用于CentOS 6.x、Debian 7.x等使用SystemV的旧版系统。
方法1:网络配置文件修改
-
编辑接口配置:
RHEL/CentOS
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
Debian/Ubuntu
sudo vi /etc/network/interfaces
-
添加MAC地址配置:
RHEL风格
HWADDR=00:11:22:33:44:55
Debian风格
hwaddress ether 00:11:22:33:44:55
-
重启网络服务:
RHEL/CentOS
sudo service network restart
Debian/Ubuntu
sudo /etc/init.d/networking restart
方法2:rc.local启动脚本
-
编辑启动脚本:
sudo vi /etc/rc.local
-
在
exit 0前添加:ip link set dev eth0 down
ip link set dev eth0 address 00:11:22:33:44:55
ip link set dev eth0 up -
添加执行权限:
sudo chmod +x /etc/rc.local
四、永久设置方法(systemd系统)
现在主流的linux平台基本上采用systemd系统了,适用于Ubuntu 16.04+、CentOS 7+等使用systemd的现代发行版。
方法1:NetworkManager配置
# 设置永久MAC地址
nmcli connection modify "有线连接1" 802-3-ethernet.cloned-mac-address 00:11:22:33:44:55
# 重启网络连接
nmcli connection down "有线连接1" && nmcli connection up "有线连接1"
方法2:netplan配置(Ubuntu 18.04+)
-
编辑配置文件:
sudo nano /etc/netplan/01-netcfg.yaml
-
添加macaddress字段:
network:
version: 2
ethernets:
eth0:
macaddress: "00:11:22:33:44:55"
dhcp4: true -
应用配置:
sudo netplan apply
方法3:systemd-networkd配置
-
创建配置文件:
sudo nano /etc/systemd/network/10-eth0.link
-
添加内容:
[Match]
MACAddress=原MAC地址[Link]
MACAddress=00:11:22:33:44:55
NamePolicy=kernel database onboard slot path -
重启服务:
sudo systemctl restart systemd-networkd
避坑:
1、修改所有操作需要root权限
2、修改前务必先禁用网卡(比如:ip link set dev eth0 down)
3、MAC地址不是任意的数字,注意MAC地址规范。
4、永久修改后需重启网络服务或系统