侧边栏壁纸
博主头像
张种恩的技术小栈博主等级

行动起来,活在当下

  • 累计撰写 748 篇文章
  • 累计创建 65 个标签
  • 累计收到 39 条评论

目 录CONTENT

文章目录

Linux基础(46)之CentOS 7的网卡命名机制

zze
zze
2019-12-06 / 0 评论 / 0 点赞 / 559 阅读 / 3185 字

不定期更新相关视频,抖音点击左上角加号后扫一扫右方侧边栏二维码关注我~正在更新《Shell其实很简单》系列

在 CentOS 7 之前以太网的传统命名方式为 eth{0,1,2,...}
假如我的主机本来有一块网卡名为 eth0,此时我们给这个主机新加一个网卡,内核读取到没有记录这个网卡的 MAC 地址时,就会给这块网卡生成一个新的网卡名,也就是在原来的网卡名基础上递增为 eth1
CentOS 7 的网卡采用了一种具有一致性、可预测功能的命名机制,该种命名方式让接口更易于识别。
CentOS 7 还保留了类似于 CentOS 6 的 udev 命名机制,Linux 内核从 2.6 版本之后开始,就可以使用 udev 协助管理系统中各设备名称。例如,磁盘设备排序、网卡设备排序等。udev 能动态地在 /dev 目录里产生自定义的、标识性强的设备文件或设备链接,在 CentOS 7 上 udev 支持多种命名方案(基于 systemd 或 biosudev 实现):

  • 基于 Firmware(硬件)命名;
  • 基于拓扑结构命名(网卡接口);

命名方式

  1. 如果 Firmware 或 BIOS 为主板上继承的设备提供的索引信息可用,且可预测,则根据此索引进行命名,例如 eno1;
  2. 如果 Firmware 或 BIOS 为 PCI-E 扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,例如 ens1;
  3. 如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如:enp2s0;
  4. 如果用户显式启用,也可根据 MAC 地址进行命名,如 enx3245ed3f32;
  5. 上述均不可用时,则使用传统命名机制,例如 eth0;

上述命名方式中,有的需要 biosdevname 程序的参与。

名称组成格式

名称的组成格式有如下几种:

  • en:ethernet,以太网;
  • wl:wlan,无线局域网设备;
  • ww:wwan,无线广域网设备;

各组成格式下的名称还可分为不同的类型:

  • o<index>:集成设备的设备索引号;
  • s<slot>:根据设备所插入的插槽索引号;
  • x<MAC>:基于 MAC 地址;
  • p<bus>s<slot>:根据 PCI 总线的标号和 PCI 总线上的插槽编号。如 enp2s1 就表示 PCI 总线的第 2 个总线的第 1 个插槽上的设备;

网卡设备的命名过程

  1. udev 使用辅助工具程序 /lib/udev/rename_device/usr/lib/udev/rules.d/60-net.rules 按其规则试图重命名;
  2. biosdevname 会根据 /usr/lib/udev/rule.d/71-biosdevname.rules 相关规则试图重命名;
  3. 通过检测网络接口设备,根据 /usr/lib/udev/rules.d/75-net-description 指定的规则试图重命名;

如果上面几步试图重命名网卡的操作失败,则使用传统网卡命名方式(eth{0,1,2,...})。

回归传统命名方式

要使用传统命名方式就需要禁用上面网卡设备的 3 个命名过程,不执行这三个命名过程则默认就是传统命名方式。
可以通过给内核传递参数以禁止重命名网络接口名称的 3 个过程,步骤如下:

1、编辑 /etc/default/grub 文件,给 GRUB_CMDLINE_LINUX 的值添加上 net.ifnames=0

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="net.ifnames=0 crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

2、第 1 步不会立即生效,还要使用 grub 的工具为 grub2 生成新的配置文件,执行下面命令:

[root@localhost default]# grub2-mkconfig -o /etc/grub2.cfg 

3、重启,使用 ifconfig 查看网卡设备名称:

image.png

4、会发现网卡名称虽然已经修改为了 eth0,但由于网卡名称发生了改变,网卡没有了 IP 地址,所以网卡信息需要重新配置,重命名原网卡配置文件:

cd /etc/sysconfig/network-scripts
mv ifcfg-ens33 ifcfg-eth0

5、修改 ifcfg-eth0 中的 DEVICENAME 值为 eth0
6、执行 service network restart 重启网卡。
7、再次执行 ifconfig 查看网卡信息:
image.png
完成~

0

评论区