原代码:
#!/bin/bash # 等待网络接口初始化(关键优化点) sleep 5 # 开启混杂模式 ip link set eth0 promisc on # 创建macvlan桥接接口 ip link add macnet link eth0 type macvlan mode bridge # 分配IP并激活接口 ip addr add 192.168.3.3 dev macnet ip link set macnet up ip route add 192.168.3.2 dev macnet ip route add 192.168.3.4 dev macnet #有多少个Docker就加多少个
修改如下:
以下是为你的脚本添加固定MAC地址(22:66:33:4c:8d:f7)的修改方案,并附上优化建议:
#!/bin/bash
# 等待网络接口初始化(关键优化点)
sleep 5
# 开启混杂模式
ip link set eth0 promisc on
# 创建macvlan桥接接口并指定固定MAC地址
ip link add macnet link eth0 address 22:66:33:4c:8d:f7 type macvlan mode bridge
# 分配IP并激活接口
ip addr add 192.168.3.3 dev macnet
ip link set macnet up
ip route add 192.168.3.2 dev macnet
ip route add 192.168.3.4 dev macnet
主要修改说明:
- 在
ip link add
命令中添加了address
参数,直接指定MAC地址为dc:a6:32:4c:8d:f7
- 保持原有网络配置逻辑,确保IP分配和路由设置不受影响
优化建议:
- 添加MAC地址验证机制(可选):
# 在创建接口后添加验证
if [ "$(cat /sys/class/net/macnet/address)" != "dc:a6:32:4c:8d:f7" ]; then
echo "MAC地址设置失败"
exit 1
fi
- 建议增加持久化配置(参考网络配置方法):
# 将配置写入网络配置文件(适用于Debian/Ubuntu)
echo -e "auto macnet\niface macnet inet static\n address 192.168.3.3\n netmask 255.255.255.0\n pre-up ip link add macnet link eth0 address dc:a6:32:4c:8d:f7 type macvlan mode bridge\n post-down ip link del macnet" >> /etc/network/interfaces
注意事项:
- MAC地址格式必须符合标准(6组十六进制数,用冒号分隔)
- 确保MAC地址在局域网内唯一
- 某些网络环境可能禁止修改MAC地址
- 建议在配置完成后使用
ip addr show macnet
验证配置结果
如果需要更复杂的MAC地址管理,可以参考ethtool
工具的使用方法或macchanger
工具进行高级配置。