一、命名規則策略
規則1:
對於板載設備命名合並固件或 BIOS 提供的索引號,如果來自固件或 BIOS 的信息可讀就命名,比如eno1,這種命名是比較常見的,否則使用規則2。
規則2:
命名合並固件或 BIOS 提供的 PCI-E 熱插拔口索引號,比如 ens1,如果信息可讀就使用,否則使用規則3。
規則3:
命名合並硬件接口的物理位置,比如 enp2s0,可用就命名,失敗直接到方案5。
規則4:
命名合並接口的 MAC 地址,比如 enx78e7d1ea46da,默認不使用,除非用戶選擇使用此方案。
規則5:
使用傳統的方案,如果所有的方案都失敗,使用類似 eth0 這樣的樣式。
二、網卡eth0命名
從centos7開始,系統默認的網卡命名有已經不是我們熟悉的ethX方式了,細心的同學會留意到一些比如ens enp等開頭的網卡名稱,簡單了解,可以解釋為centos7開始,網卡命名會根據網卡的硬件信息,插槽位置等有關;
而網上也有為那些依然想使用ethX方式命名的提供了策略。比如在內核啟動參數里增加biosdevname=0 net.ifnames=0;
但是這里忽略了 一個問題,那就是為什么centos7不再使用以前的ethX方式?根本是因為之前ethX方式是不確定的,每次啟動可能都不同(如果沒有用戶自定義網卡名稱的前提下);
所以大家提供的這種辦法其實是不好的;
三、核心流程
核心流程:明確一點是,linux內核啟動過程中,會默認給網卡以ethX方式隨機命名,然后再通過systemd去rename成其他名稱。關鍵字,rename!
一、如何rename?
默認rename流程: 按照如下順序執行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
step1 依據/usr/lib/udev/rules.d/60-net.rules, 查看是否有ifcfg-xx配置文件(路徑在/etc/sysconfig/network-scripts/),是否有定義了指定MAC地址的配置文件(ifcfg-xx ,xx必須和配置文件的內容DEVICE一致),如果有,則命名改網卡;
二、scheme次序
上面step4中提到,按照指定的scheme規則,這個規則是什么呢?

eth2這個網卡,scheme名稱有3個,如果systemd自選,會使用哪個?ens5f0.(那這個為什么是/sys/class/net/eth2 而不是/sys/class/net/ens5f0 ,那是因為自定義的緣故;)
三、用戶自定義網卡名稱
1、在用戶沒有自定義rules文件前提下,step1中的網卡命名方式也可認為是 一種用戶自定義的網卡命名,即在/etc/sysconfig/network-scripts/ifcfg-xx 文件,xx就是這個網卡名稱,文件內容中體現MAC_ADDRESS、NAME,這種情況下,則會按照配置文件中指定的名稱來命名網卡;
2、如果用戶自定義了rules文件,放在/etc/udev/rules.d/目錄下,則這個優先級是最高的;比1中ifcfg-xx方式優先級更高,但是如果兩者不一致,則在重啟network服務時,會依據ifcfg-xx,所以用戶不應該同時采用里兩種方式給同一個網卡命不同的名稱;
四、內核啟動參數biosdevnane、net.ifnames
默認就是內核啟動參數沒有biosdevname 也沒有net.ifnames 參數(其實默認是net.ifnames=1,biosdevname=0)這種情況下就按照一 中進行網卡命名;eno-ens-enp的方式逐個匹配。但是如果使能了biosdevname.則會使用biosdevname的命名 step1沒有命名的網卡;
內核啟動參數net.ifname,
如果在啟動參數中增加net.ifname=0,這個文件會在/lib/udev/rule.d/80-net-name-slot.rules體現使用價值,則告訴系統不用scheme的方式來命名,這個時候,會恢復ethx這種不確定性的命名方式;
四、修改網卡名稱樣式為ethx
如果不習慣使用新的命名規則,可以恢復使用傳統的方式命名,編輯 grub 文件,增加兩個變量,再使用 grub2-mkconfig 重新生成 grub 配置文件即可。
1、編輯 grub 配置文件
vim /etc/sysconfig/grub # 其實是/etc/default/grub的軟連接
# 為GRUB_CMDLINE_LINUX變量增加2個參數,具體內容如下:GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swapnet.ifnames=0 biosdevname=0rhgb quiet"
2、重新生成 grub 配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
然后重新啟動 Linux 操作系統,通過 ip addr 可以看到網卡名稱已經變為 eth0 。
3、修改網卡配置文件
原來網卡配置文件名稱為 ifcfg-ens33,這里需要修改為 ethx 的格式,並適當調整網卡配置文件。
mv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-eth0# 修改ifcfg-eth0文件如下內容(其它內容不變)
NAME=eth0
DEVICE=eth0
[root@localhost ~]# systemctl restart network.service # 重啟網絡服務
五、修改網卡名稱樣式為ethx(另一種方式)
直接在/usr/lib/udev/rules.d/60-net.rules配置文件中綁定mac地址與網卡名稱
同時修改/etc/sysconfig/network-scripts/ifcfg-ethX以及配置文件中的兩個參數
NAME = ethX
DEVICE=ethX
相關鏈接:https://www.jianshu.com/p/6196bab4dc38
