如何在AWS托管的CentOS 6中将主网口从eth0改为net0?
最优实现方法:AWS CentOS 6 修改主网卡名为 net0
我之前在AWS上折腾过CentOS 6改网卡名的需求,踩过不少坑,给你分享下亲测有效的最优方案——核心是要同时处理cloud-init的自动配置和udev规则,还要同步修改网卡配置文件,具体步骤如下:
1. 先禁用cloud-init的网络自动配置
AWS实例默认会通过cloud-init初始化网络,它会覆盖我们手动设置的网卡名,所以第一步必须先让cloud-init别管网络:
- 创建自定义cloud-init配置文件:
vi /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg - 写入以下内容并保存:
network: config: disabled
2. 修改udev持久化网卡规则
CentOS 6生效的是70-persistent-net.rules,不是你之前改的75-persistent-net-generator.rules(那个是生成规则的模板,改了也白搭):
- 先查看主网卡eth0的MAC地址:
记下输出里的MAC(比如ip addr show eth0 | grep link/ether0a:1b:2c:3d:4e:5f) - 编辑udev规则文件:
vi /etc/udev/rules.d/70-persistent-net.rules - 找到对应eth0的那一行(会匹配刚才的MAC),把
NAME="eth0"改成NAME="net0",修改后类似:SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="0a:1b:2c:3d:4e:5f", ATTR{type}=="1", KERNEL=="eth*", NAME="net0" - 重载udev规则:
udevadm control --reload-rules
3. 修改网卡配置文件
要同步修改网卡的配置文件,否则重启后网络会失效:
- 重命名原配置文件:
mv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-net0 - 编辑新的配置文件:
vi /etc/sysconfig/network-scripts/ifcfg-net0 - 把文件里的
DEVICE=eth0改成DEVICE=net0,如果有NAME=eth0也一并改成NAME=net0,其他配置(比如BOOTPROTO、IPADDR、GATEWAY等)保持不变,修改后示例:DEVICE=net0 TYPE=Ethernet ONBOOT=yes BOOTPROTO=dhcp NAME=net0
4. 验证并重启
- 先检查所有配置有没有错误,然后重启系统:
reboot - 重启后用以下命令确认网卡名和网络状态:
ip addr show net0 ping -c 3 8.8.8.8
这样操作后,网卡名就会稳定改成net0,不会被cloud-init或者udev重置了。
内容的提问来源于stack exchange,提问作者Debrian
相关产品推荐
相关产品推荐

