> CentOS > CentOS故障 >

解决centos7的网卡命名问题

在进行centos7的pxe安装测试中发现了网卡命名不再遵从来有的命名规则而启用了最新的命名方式,官网文档描述如下:

 

在 Red Hat Enterprise Linux 7 中,systemd 和 udevd 支持大量不同的命名方案。默认行为是根据固件、拓扑及位置信息分配固定名称。这个命名方法的优点是完全自动且可预测,即使添加或者删除硬件也不会变化(未 发生重新列举),且可以在不产生任何影响的情况下替换破坏的硬件。这个行为的缺点是名称有时比之前使用的名称难读,例如使用 enp5s0 替换 eth0。
目前 udevd 本身就支持下列命名方案。
方案 1
合并固件或者 BIOS 的名称为板载设备提供索引号的名称,例如:eno1。如果固件信息适用且可用,则 systemd 默认情况下根据这个方案命名接口,同时使用方案 2 作为备选。
方案 2
合并固件或者 BIOS 的名称提供 PCI 快捷热插拔插槽索引号的名称,例如 ens1。如果固件信息适用且可用,则 systemd 默认情况下根据这个方案命名接口,同时使用方案 3 作为备选。
方案 3
合并硬件连接器物理位置的名称,例如:enp2s0。如果固件信息适用且可用,则 systemd 默认情况下根据这个方案命名接口,同时使用方案 5 作为备选。
方案 4
合并接口 MAC 地址的名称,例如:enx78e7d1ea46da。默认情况下 systemd 不会根据这个方案命名接口,但如果需要可以启用这个功能。
方案 5
传统的不可预测内核属性 ethX 命名,例如:eth0。如果其他所有方法都失败,systemd 就根据这个方案命名接口。
如果该系统启用了 BIOSDEVNAME,或者用户已添加更改内核设备名称的 udevd 规则,则这些规则将替代默认的 systemd 策略。

1. 解决方法如下:

These are the necessary steps:

  • Add "net.ifnames=0" and "biosdevname=0" as kernel arguments to grub
  • In '/etc/sysconfig/network-scripts/' Change your configured NIC config file to 'ifcfg-ethX'
  • If you have multiple interfaces and want to control naming of each device rather than letting the kernel do in its own way, /etc/udev/rules.d/60-net.rules seems necessary to override /usr/lib/udev/rules.d/60-net.rules.
  • 引自:http://wiki.centos.org/FAQ/CentOS7
2. 因centos7 采用grub2引导,还需要对grub2进行修改,方法如下:
vim /etc/defaut/grub增加 “net.ifnames=0 biosdevname=0”
grub2-mkconfig -o /boot/grub2/grub.cfg
(责任编辑:IT)