最近不少小伙伴都反馈说,部分OpenWrt 固件每次重启后,MAC 地址都会变化。这种情况在某些应用场景中真是让人抓狂:比如路由器绑定、网管设备识别等等,MAC 一变,全都得重新配置。
为了解决这个头痛的问题,今天给大家带来一个简单的脚本方案,让你的 OpenWrt 重启后也能稳定保持同一个 MAC 地址。话不多说,下面就是完整的操作流程!
一、脚本方案
这个脚本会在每次启动时,将指定接口的 MAC 地址设为你想要的固定值。再也不用担心重启后 MAC 地址乱跳的问题啦~
代码示例
将以下脚本保存为 /etc/init.d/set_mac.sh:
#!/bin/sh /etc/rc.common
# 设置脚本启动优先级为最高
START=00
LOG_FILE="/root/set_mac.log" # 日志文件路径
start() {
# 定义接口和MAC地址
local interface="eth0"
local macaddr="d2:13:a1:46:74:4e" # 你想要的MAC地址
# 清空之前的日志文件
> $LOG_FILE
# 输出开始执行的日志
echo "开始执行设置MAC地址脚本..." >> $LOG_FILE
# 检查接口是否存在
if [ -n "$(ifconfig $interface)" ]; then
# 输出接口存在的日志
echo "接口${interface}存在,开始设置MAC地址..." >> $LOG_FILE
# 关闭接口
ifconfig $interface down
echo "接口${interface}已关闭。" >> $LOG_FILE
# 设置MAC地址
ifconfig $interface hw ether $macaddr
echo "已将接口${interface}的MAC地址设置为${macaddr}。" >> $LOG_FILE
# 启动接口
ifconfig $interface up
echo "接口${interface}已启动。" >> $LOG_FILE
# 输出设置成功的日志
echo "已成功将接口${interface}的MAC地址设置为${macaddr}。" >> $LOG_FILE
else
# 输出接口不存在的日志
echo "接口${interface}不存在,跳过设置MAC地址。" >> $LOG_FILE
fi
# 输出脚本执行完毕的日志
echo "设置MAC地址脚本执行完毕。" >> $LOG_FILE
}
二、设置脚本权限与自启动
接下来,我们要让脚本可以执行并随设备开机时运行。
1、给脚本执行权限:
chmod +x /etc/init.d/set_mac.sh
2、启用开机自启动:
/etc/init.d/set_mac.sh enable
这样一来,每次启动设备时,OpenWrt 都会自动为 eth0 接口设置指定的 MAC 地址,确保它保持不变,稳定可靠!
三、日志记录
脚本每次运行的日志会保存在 /root/set_mac.log 中,可以随时查看执行状态,确保设置成功。