1. 程式人生 > >如何在CentOS7上改變網絡接口名

如何在CentOS7上改變網絡接口名

pos 不同的 名稱 linux變量 技術分享 art 新書 重啟 res

如何在CentOS7上改變網絡接口名

傳統上,Linux的網絡接口被枚舉為eth[0123...],但這些名稱並不一定符合實際的硬件插槽,PCI位置,USB接口數量等,這引入了一個不可預知的命名問題(例如,由於不確定的設備探測行為),這可能會導致不同的網絡配置錯誤(例如,由無意的接口改名引起的禁止接口或者防火墻旁路)。基於MAC地址的udev規則在虛擬化的環境中並不有用,這裏的MAC地址如端口數量一樣無常。

CentOS/RHEL6引入了一致和可預測的網絡設備命名網絡接口的方法。這些特性可以唯一地確定網絡接口的名稱以使定位和區分設備更容易,並且在這樣一種方式下,無論是否重啟機器、過了多少時間、或者改變硬件,其名字都是持久不變的。然而,這種命名規則並不是默認在CentOS/RHEL6上開啟。

從CentOS/RHEL7起,這種可預見的命名規則變成了默認。根據這一規則,接口名稱被自動基於固件,拓撲結構和位置信息來確定。現在,即使添加或移除網絡設備,接口名稱仍然保持固定,而無需重新枚舉,和壞掉的硬件可以無縫替換。

* 基於接口類型的兩個字母前綴:
*   en -- 以太網
*   sl -- 串行線路IP (slip)
*   wl -- wlan
*   ww -- wwan
*
* 名字類型:
*   b<number>                             -- BCMA總線和新書
*   ccw<name>                             -- CCW總線組名
*   o<index>                              -- 車載設備的索引號
*   s<slot>[f<function>][d<dev_port>]     -- 熱插拔插槽索引號
*   x<MAC>                                -- MAC 地址
*   [P<domain>]p<bus>s<slot>[f<function>][d<dev_port>]
*                                         -- PCI 位置
*   [P<domain>]p<bus>s<slot>[f<function>][u<port>][..]1[i<interface>]
*                                         -- USB端口號鏈

新的命名方案的一個小的缺點是接口名稱相比傳統名稱有點難以閱讀。例如,你可能會發現像enp0s3名字。再者,你再也無法來控制接口名了。

技術分享圖片

如果由於某種原因,你喜歡舊的方式,並希望能夠選擇任意名稱分配給CentOS/ RHEL7的設備,你需要重寫默認的可預測的命名規則,定義基於MAC地址udev規則。

下面是如何在CentOS或RHEL7命名網絡接口。

首先,讓我們來禁用該可預測命名規則。對於這一點,你可以在啟動時傳遞“net.ifnames=0”的內核參數。這是通過編輯/etc/default/grub並加入“net.ifnames=0”到GRUBCMDLINELINUX變量來實現的。

技術分享圖片

然後運行這條命令來重新生成GRUB配置並更新內核參數。

$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg 

技術分享圖片

接下來,編輯(或創建)一個udev的網絡命名規則文件(/etc/udev/rules.d/70-persistent-net.rules),並添加下面一行。更換成你自己的MAC地址(08:00:27:a9:7a:e1)和接口(sushi)。

 $ sudo vi /etc/udev/rules.d/70-persistent-net.rules 

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:a9:7a:e1", ATTR{type}=="1", KERNEL=="eth*", NAME="sushi"

最後,重啟電腦並驗證新的接口名。

技術分享圖片

請註意,配置重命名後的接口仍然是你的責任。如果網絡配置(例如,IPv4設置,防火墻規則)是基於舊名稱(變更前)的,則需要更新的網絡配置以反映更改的名稱。

如何在CentOS7上改變網絡接口名