Linux系統入門學習:在CentOS7上改變網路介面名
提問: 在CentOS7,我想將分配的網路介面名更改為別的名字。有什麼合適的方法來來重新命名CentOS或RHEL7的網路介面?
傳統上,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設定,防火牆規則)是基於舊名稱(變更前)的,則需要更新的網路設定以反映更改的名稱。
CentOS 7系統配置上的變化解析
CentOS 7下搭建高可用叢集
Linux系統入門學習:在CentOS 7上安裝VMware 10