嵌入式Linux网口MAC地址修改

一、为何要改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:网络配置文件修改
  1. 编辑接口配置:

    RHEL/CentOS

    sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0

    Debian/Ubuntu

    sudo vi /etc/network/interfaces

  2. 添加MAC地址配置:

    RHEL风格

    HWADDR=00:11:22:33:44:55

    Debian风格

    hwaddress ether 00:11:22:33:44:55

  3. 重启网络服务:

    RHEL/CentOS

    sudo service network restart

    Debian/Ubuntu

    sudo /etc/init.d/networking restart

方法2:rc.local启动脚本
  1. 编辑启动脚本:

    sudo vi /etc/rc.local

  2. 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

  3. 添加执行权限:

    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+)
  1. 编辑配置文件:

    sudo nano /etc/netplan/01-netcfg.yaml

  2. 添加macaddress字段:

    network:
    version: 2
    ethernets:
    eth0:
    macaddress: "00:11:22:33:44:55"
    dhcp4: true

  3. 应用配置:

    sudo netplan apply

方法3:systemd-networkd配置
  1. 创建配置文件:

    sudo nano /etc/systemd/network/10-eth0.link

  2. 添加内容:

    [Match]
    MACAddress=原MAC地址

    [Link]
    MACAddress=00:11:22:33:44:55
    NamePolicy=kernel database onboard slot path

  3. 重启服务:

    sudo systemctl restart systemd-networkd


避坑:

1、修改所有操作需要root权限

2、修改前务必先禁用网卡(比如:ip link set dev eth0 down

3、MAC地址不是任意的数字,注意MAC地址规范。

4、永久修改后需重启网络服务或系统

最 后

相关推荐
黑化旺仔18 分钟前
【OC】KVO
macos·ios·objective-c·cocoa
zx_7414848122 分钟前
【Linux入门】Shell 函数、正则表达式与文本处理:cut 与 awk
linux·运维·正则表达式
Zenova EdgeOS34 分钟前
Linux dmesg 工业边缘实战:内核日志过滤、持久化与故障定位
linux·运维·边缘计算·工业边缘·dmesg·内核日志
金士顿1 小时前
System.Text.Json Source Generator 深度解析:为什么 Native AOT 不喜欢反射
linux·asp.net core·arm64·net·native aot
wdfk_prog2 小时前
ROS教程08:从 TransportTCP::connect() 追到 TCPROS Connection Header、序列化与 Socket 数据传输
运维·缓存·docker·容器·ros
做运维的阿瑞2 小时前
Python 标准库汇总:分类速览与常用模块清单
linux·运维·python
百万蹄蹄向前冲2 小时前
密码都对Node.js却连不上Linux数据库
linux·mysql
彧azz2 小时前
Linux 网络编程学习总结
linux·网络·笔记·学习·面试
日常筹谋记3 小时前
自动化仓储安全防护工况评估:明治传感器AS-33C技术适配性分析
大数据·运维·创业创新·业界资讯
susplus3 小时前
【ARM 裸机开发 (IMX6ULL-mini)】GNU工具、Makefile 工程构建、链接脚本详解|C 语言点灯 + 蜂鸣器驱动
linux·arm·makefile·imx6ull