• Linux网卡命名规则


       

    为什么需要这个?

       

    服务器通常有多块网卡,有板载集成的,同时也有插在PCIe插槽的。Linux系统的命名原来是eth0,eth1这样的形式,但是这个编号往往不一定准确对应网卡接口的物理顺序

       

    为解决这类问题,dell开发了biosdevname方案。systemd v197版本中将dell的方案作了进一步的一般化拓展。目前的Centos既支持dell的biosdevname,也支持systemd的方案

       

    CentOS 7 中的命名策略:

       

    Scheme 1:如果从 BIOS 中能够读取到可用的,板载网卡的索引号,则使用这个索引号命名,例如:eno1,如不能则

    尝试 Scheme 2

    Scheme 2:如果从 BIOS 中能够读取到可用的,网卡所在的 PCI-E 热插拔槽(注:pci 槽位号)的索引号,则使用这个索引号

    命名,例如:ens33,如不能则尝试 Scheme 3

       

    可以使用 lspci -v 查看网卡所在的 PCI-E 槽位( Physical Slot )

       

    Scheme 3:如果能拿到设备所连接的物理位置( PCI 总线号+槽位号)信息,则使用这个信息命名,例如:enp2s0,如不能则

    尝试 Scheme 4

    Scheme 4:使用网卡的 MAC 地址来命名,例如:enx000c29d683aa 。默认不开启

    Scheme 5:使用传统的 kernel 命名方法,例如:eth0,这种命名方法的结果不可预知,即可能第二块网卡对应 eth0,第一块

    网卡对应 eth1

       

    CentOS 7 开机内核检测到的网卡信息:

    [root@web ~]# dmesg | grep -i eth

    [ 2.297646] e1000 0000:02:01.0 eth0: (PCI:66MHz:32-bit) 00:0c:29:d6:83:8c

    [ 2.297660] e1000 0000:02:01.0 eth0: Intel(R) PRO/1000 Network Connection

    [ 2.688274] e1000 0000:02:02.0 eth1: (PCI:66MHz:32-bit) 00:0c:29:d6:83:96

    [ 2.688282] e1000 0000:02:02.0 eth1: Intel(R) PRO/1000 Network Connection

    [ 3.074626] e1000 0000:02:06.0 eth2: (PCI:66MHz:32-bit) 00:0c:29:d6:83:a0

    [ 3.074635] e1000 0000:02:06.0 eth2: Intel(R) PRO/1000 Network Connection

       

    biosdevname 和 net.ifnames 两种命名规范

       

    net.ifnames 的命名规范为:设备类型+设备位置+数字

       

    设备类型:

    en 表示 Ethernet

    wl 表示 WLAN

    ww 表示无线广域网

       

    实例的例子:

    eno1 板载网卡

    enp0s2 第0号 PCI 总线的2号槽位网卡

    ens33 PCI 的 Physical Slot 为 33

    wwp0s29f7u2i2 4G modem

    wlp0s2f1u4u1 连接在 USB Hub 上的无线网卡

    enx78e7d1ea46da pci网卡

       

    biosdevname 的命名规范

       

    实际的例子:

    em1 板载网卡

    p3p4 pci 网卡

    p3p4_1 虚拟网卡

       

    systemd 中的实际执行顺序:

       

    按照如下顺序执行 udev 的 rule

       

    1)/usr/lib/udev/rules.d/60-net.rules

    2)/usr/lib/udev/rules.d/71-biosdevname.rules

    3)/usr/lib/udev/rules.d/75-net-description.rules

    4)/usr/lib/udev/rules.d/80-net-name-slot.rules

       

    1)60-net.rules

       

    使用 /lib/udev/rename_device 这个程序,去查询 /etc/sysconfig/network-scripts/ 下所有以 ifcfg- 开头的文件,如果在 ifcfg-xx 中匹配到 HWADDR=xx:xx:xx:xx:xx:xx 参数的网卡接口则选取 DEVICE=yyyy 中设置的名字作为网卡名称

       

    2)71-biosdevname.rules

       

    如果系统中安装了 biosdevname ,且内核参数指定 biosdevname=1,且上一步没有重命名网卡,则按照 biosdevname 的命名规范,从 BIOS 中获取相关信息来命名网卡

       

    主要是取 SMBIOS 中的 type 9(System Slot)和 type 41(Onboard Devices Extended Information)不过要求 SMBIOS 的版本要高于 2.6,且系统中要安装 biosdevname 程序

       

    3)75-net-description.rules

       

    udev 通过检查网卡信息,填写如下这些 udev 的属性值

       

    ID_NET_NAME_ONBOARD

    ID_NET_NAME_SLOT

    ID_NET_NAME_PATH

    ID_NET_NAME_MAC

       

    查看读取到的网卡信息的属性值:

       

    udevadm info /sys/class/net/ifname | grep ID_NET_NAME

       

    4)80-net-name-solt.rules

       

    如果在60-net.rules ,71-biosdevname.rules这两条规则中没有重命名网卡,且内核指定net.ifnames=1参数,则udev依次尝试使用以下属性值来命名网卡,如果这些属性值都没有,则网卡不会被重命名

       

    ID_NET_NAME_SLOT

    ID_NET_NAME_PATH

    ID_NET_NAME_MAC

       

    上边的71-biosdevname.rules 是实际执行biosdevname的策略;75-net-description.rules和80-net-name-slot.rules实际执行上面策略的2,3,4

       

    根据上述的过程,可见网卡命名受 biosdevname和net.ifnames这两个内核参数影响。这两个参数都可以在grub配置中提供

       

    biosdevname=0是系统默认值(dell服务器默认是1),net.ifnames=1是系统默认值

       

    配置 CentOS 7 使用传统的网卡接口命名方式:

       

    编辑内核参数:

    [root@web ~]# vim /etc/default/grub

    ……

    GRUB_CMDLINE_LINUX="net.ifnames=0 crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"

    ……

       

    为grub2生成配置文件:

    编辑完grub配置文件以后不会立即生效,需要生成配置文件

    [root@web ~]# grub2-mkconfig -o /etc/grub2.cfg

       

    然后重新启动系统

       

    Note:以前提供的配置文件就不可以使用啦,需要重新提供配置文件

       

       

       

       

       

       

       

  • 相关阅读:
    线段树再练习
    SCOI 2014 省选总结
    网络流拓展——最小费用最大流
    【集合!】 20140416 && 20140417集训 总结
    Codeforces Round #215 (Div. 1)
    CDQ分治题目小结
    Codeforces Round #232 (Div. 1)
    Codeforces Round #264 (Div. 2)
    Uva 12361 File Retrieval 后缀数组+并查集
    FFT初步学习小结
  • 原文地址:https://www.cnblogs.com/xiaosongblog/p/14458936.html
Copyright © 2020-2023  润新知