Ubuntu 22.04 LTS下如何让bond0接口使用eth0的硬件MAC地址
我来帮你解决这个问题!你遇到的bond0重启后MAC地址变化的情况,在active-backup模式下确实比较常见,不过不用手动指定MAC地址也能搞定,下面是具体的方案:
核心原理与解决方案
在active-backup bonding模式中,默认的MAC地址策略是none——bond0会采用第一个被加载到bond中的网卡的MAC地址,这就导致重启时如果网卡启动顺序变化,bond0的MAC也会跟着变。而我们需要的是让bond0始终绑定primary网卡(也就是你的eth0)的硬件MAC,不需要手动写死地址,这时候可以通过配置bond-fail_over_mac_policy fixed参数来实现。
这个参数的作用是:强制bond接口始终使用你指定的primary网卡的MAC地址,哪怕primary网卡故障切换到备用网卡,bond0也会保留eth0的MAC地址(备用网卡会临时使用这个MAC来维持网络连接,primary恢复后自动切回)。
修改你的网络配置文件
打开你的/etc/network/interfaces文件,在bond0的配置块中添加这个参数,同时确保bond-primary明确指向eth0(你可以把这个参数移到bond0块里,这样配置更清晰):
# interfaces(5) file used by ifup(8) and ifdown(8) auto lo eth0 eth1 bond0 iface lo inet loopback ##### bond0-slaves iface eth0 inet manual bond-master bond0 iface eth1 inet manual bond-master bond0 ##### bond-interface iface bond0 inet dhcp bond-mode active-backup bond-miimon 100 bond-slaves none bond-primary eth0 # 明确指定primary网卡为eth0 bond-fail_over_mac_policy fixed # 强制使用primary网卡的MAC
验证配置效果
修改完成后,你可以重启网络服务或者直接重启服务器,然后用以下命令检查MAC地址:
ip addr show bond0 ip addr show eth0
你会看到bond0的MAC地址和eth0的硬件MAC完全一致,而且后续重启服务器也不会再变化了。
为什么这个方案比手动写MAC更好
这个方法不需要你手动复制粘贴eth0的MAC地址,完全依赖系统自动获取primary网卡的硬件地址,避免了后续eth0更换(比如更换网卡)时还要手动修改配置的麻烦,和你在Proxmox中使用bridge-hw eth0的思路是一致的,只不过Ubuntu bonding用的是专门的bond参数来实现。
备注:内容来源于stack exchange,提问作者Elvin Mammadov

