Linux网卡命名规则
?
網(wǎng)卡命名
一、為什么需要這個(gè)
? ? ? 服務(wù)器通常有多塊網(wǎng)卡,有板載集成的,同時(shí)也有插在PCIe插槽的。Linux系統(tǒng)的命名原來(lái)是eth0,eth1這樣的形式,但是這個(gè)編號(hào)往往不一定準(zhǔn)確對(duì)應(yīng)網(wǎng)卡接口的物理順序。
? ? ??為解決這類問(wèn)題,dell開(kāi)發(fā)了biosdevname方案。
? ? ??systemd v197版本中將dell的方案作了進(jìn)一步的一般化拓展。
? ? ??目前的Centos既支持dell的biosdevname,也支持systemd的方案。
?
二、Centos7中的命名策略
? ? ??Scheme 1: 如果從BIOS中能夠取到可用的,板載網(wǎng)卡的索引號(hào),則使用這個(gè)索引號(hào)命名,例如: eno1,如不能則嘗試Scheme 2
? ? ??Scheme 2: 如果從BIOS中能夠取到可以用的,網(wǎng)卡所在的PCI-E熱插拔插槽(注:pci槽位號(hào))的索引號(hào),則使用這個(gè)索引號(hào)命名,例如: ens1,如不能則嘗試Scheme 3
? ? ??Scheme 3:如果能拿到設(shè)備所連接的物理位置(PCI總線號(hào)+槽位號(hào)?)信息,則使用這個(gè)信息命名,例如:enp2s0,如不能則嘗試Scheme 5
? ? ??Scheme 5:傳統(tǒng)的kernel命名方法,例如: eth0,這種命名方法的結(jié)果不可預(yù)知的,即可能第二塊網(wǎng)卡對(duì)應(yīng)eth0,第一塊網(wǎng)卡對(duì)應(yīng)eth1。
? ? ??Scheme 4 使用網(wǎng)卡的MAC地址來(lái)命名,這個(gè)方法一般不使用。
?
三、biosdevname和net.ifnames兩種命名規(guī)范
net.ifnames的命名規(guī)范為: ??設(shè)備類型+設(shè)備位置+數(shù)字
設(shè)備類型:
? ? ??en 表示Ethernet
? ? ??wl 表示W(wǎng)LAN
? ? ??ww 表示無(wú)線廣域網(wǎng)WWAN
?
實(shí)際的例子:
? ? ??eno1 板載網(wǎng)卡
? ? ??enp0s2 ?pci網(wǎng)卡
? ? ??ens33 ??pci網(wǎng)卡
? ? ??wlp3s0 ?PCI無(wú)線網(wǎng)卡
? ? ??wwp0s29f7u2i2 ??4G modem
? ? ??wlp0s2f1u4u1 ??連接在USB Hub上的無(wú)線網(wǎng)卡
? ? ??enx78e7d1ea46da pci網(wǎng)卡
?
biosdevname的命名規(guī)范為
實(shí)際的例子:
? ? ??em1 板載網(wǎng)卡
? ? ??p3p4 pci網(wǎng)卡
? ? ??p3p4_1 虛擬網(wǎng)卡
?
四、systemd中的實(shí)際執(zhí)行順序
按照如下順序執(zhí)行udev的rule
1./usr/lib/udev/rules.d/60-net.rules
2./usr/lib/udev/rules.d/71-biosdevname.rules
3./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這個(gè)程序,去查詢/etc/sysconfig/network-scripts/下所有以ifcfg-開(kāi)頭的文件,如果在ifcfg-xx中匹配到HWADDR=xx:xx:xx:xx:xx:xx參數(shù)的網(wǎng)卡接口則選取DEVICE=yyyy中設(shè)置的名字作為網(wǎng)卡名稱。
2)71-biosdevname.rules
? ? ??如果系統(tǒng)中安裝了biosdevname,且內(nèi)核參數(shù)指定biosdevname=1,且上一步?jīng)]有重命名網(wǎng)卡,則按照biosdevname的命名規(guī)范,從BIOS中取相關(guān)信息來(lái)命名網(wǎng)卡。
? ? ??主要是取SMBIOS中的type 9 (System Slot) 和 type 41 (Onboard Devices Extended Information)不過(guò)要求SMBIOS的版本要高于2.6,且系統(tǒng)中要安裝biosdevname程序。
3)75-net-description.rules
? ? ??udev通過(guò)檢查網(wǎng)卡信息,填寫如下這些udev的屬性值
? ? ??ID_NET_NAME_ONBOARD
? ? ??ID_NET_NAME_SLOT
? ? ??ID_NET_NAME_PATH
? ? ??ID_NET_NAME_MAC?
4)80-net-name-slot.rules
? ? ??如果在60-net.rules ,71-biosdevname.rules這兩條規(guī)則中沒(méi)有重命名網(wǎng)卡,且內(nèi)核指定net.ifnames=1參數(shù),則udev依次嘗試使用以下屬性值來(lái)命名網(wǎng)卡,如果這些屬性值都沒(méi)有,則網(wǎng)卡不會(huì)被重命名。
? ? ??ID_NET_NAME_ONBOARD
? ? ??ID_NET_NAME_SLOT
? ? ??ID_NET_NAME_PATH
? ? ??上邊的71-biosdevname.rules 是實(shí)際執(zhí)行biosdevname的策略
? ? ??75-net-description.rules和80-net-name-slot.rules實(shí)際執(zhí)行上面策略的1,2,3。
? ? ??根據(jù)上述的過(guò)程,可見(jiàn)網(wǎng)卡命名受 biosdevname和net.ifnames這兩個(gè)內(nèi)核參數(shù)影響。
? ? ??這兩個(gè)參數(shù)都可以在grub配置中提供。
? ? ??biosdevname=0是系統(tǒng)默認(rèn)值(dell服務(wù)器默認(rèn)是1),net.ifnames=1是系統(tǒng)默認(rèn)值:
修改默認(rèn)參數(shù):如回歸默認(rèn)命名方式:
1.編輯內(nèi)核參數(shù)
? ? ??在GRUB_CMDLINE_LINUX中加入net.ifnames=0即可
? ? ??[root@centos7 ~]$vim /etc/default/grub
? ? ??GRUB_CMDLINE_LINUX="crashkernel=auto net.ifnames=0 rhgb quiet"
2.為grub2生成配置文件
? ? ??編輯完grub配置文件以后不會(huì)立即生效,需要生成配置文件。
? ? ??[root@centos7 ~]$grub2-mkconfig -o /etc/grub2.cfg
? ? ??第二節(jié)所說(shuō)的Scheme的策略順序是系統(tǒng)默認(rèn)的。
? ? ??如系統(tǒng)BIOS符合要求,且系統(tǒng)中安裝了biosdevname,且biosdevname=1啟用,則biosdevname優(yōu)先;
? ? ??如果BIOS不符合biosdevname要求或biosdevname=0,則仍然是systemd的規(guī)則優(yōu)先。
? ? ??如果用戶自己定義了udev rule來(lái)修改內(nèi)核設(shè)備名字,則用戶規(guī)則優(yōu)先。
內(nèi)核參數(shù)組合使用的時(shí)候,其結(jié)果如下:
? ? ??默認(rèn)內(nèi)核參數(shù)(biosdevname=0,net.ifnames=1): ?網(wǎng)卡名 "enp5s2"
? ? ??biosdevname=1,net.ifnames=0:網(wǎng)卡名 "em1"
? ? ??biosdevname=0,net.ifnames=0:網(wǎng)卡名 "eth0" (最傳統(tǒng)的方式,eth0 eth1 傻傻分不清)
?
轉(zhuǎn)載于:https://www.cnblogs.com/morgan363/p/11078905.html
總結(jié)
以上是生活随笔為你收集整理的Linux网卡命名规则的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux用于查看文件内容 tail、c
- 下一篇: (转载)Linux编程获取本机IP地址的