提問: 在CentOS7,我想將分配的網(wǎng)絡接口名更改為別的名字。有什么合適的方法來來重命名CentOS或RHEL7的網(wǎng)絡接口?
傳統(tǒng)上,Linux的網(wǎng)絡接口被枚舉為eth[0123...],但這些名稱并不一定符合實際的硬件插槽,PCI位置,USB接口數(shù)量等,這引入了一個不可預知的命名問題(例如,由于不確定的設備探測行為),這可能會導致不同的網(wǎng)絡配置錯誤(例如,由無意的接口改名引起的禁止接口或者防火墻旁路)?;贛AC地址的udev規(guī)則在虛擬化的環(huán)境中并不有用,這里的MAC地址如端口數(shù)量一樣無常。
CentOS/RHEL6引入了一致和可預測的網(wǎng)絡設備命名網(wǎng)絡接口的方法。這些特性可以唯一地確定網(wǎng)絡接口的名稱以使定位和區(qū)分設備更容易,并且在這樣一種方式下,無論是否重啟機器、過了多少時間、或者改變硬件,其名字都是持久不變的。然而,這種命名規(guī)則并不是默認在CentOS/RHEL6上開啟。
從CentOS/RHEL7起,這種可預見的命名規(guī)則變成了默認。根據(jù)這一規(guī)則,接口名稱被自動基于固件,拓撲結(jié)構(gòu)和位置信息來確定?,F(xiàn)在,即使添加或移除網(wǎng)絡設備,接口名稱仍然保持固定,而無需重新枚舉,和壞掉的硬件可以無縫替換。
* 基于接口類型的兩個字母前綴:
* en -- 以太網(wǎng)
* sl -- 串行線路IP (slip)
* wl -- wlan
* ww -- wwan
*
* 名字類型:
* bnumber> -- BCMA總線和新書
* ccwname> -- CCW總線組名
* oindex> -- 車載設備的索引號
* sslot>[ffunction>][ddev_port>] -- 熱插拔插槽索引號
* xMAC> -- MAC 地址
* [Pdomain>]pbus>sslot>[ffunction>][ddev_port>]
* -- PCI 位置
* [Pdomain>]pbus>sslot>[ffunction>][uport>][..]1[iinterface>]
* -- USB端口號鏈
新的命名方案的一個小的缺點是接口名稱相比傳統(tǒng)名稱有點難以閱讀。例如,你可能會發(fā)現(xiàn)像enp0s3名字。再者,你再也無法來控制接口名了。
如果由于某種原因,你喜歡舊的方式,并希望能夠選擇任意名稱分配給CentOS/ RHEL7的設備,你需要重寫默認的可預測的命名規(guī)則,定義基于MAC地址udev規(guī)則。
下面是如何在CentOS或RHEL7命名網(wǎng)絡接口。
首先,讓我們來禁用該可預測命名規(guī)則。對于這一點,你可以在啟動時傳遞“net.ifnames=0”的內(nèi)核參數(shù)。這是通過編輯/etc/default/grub并加入“net.ifnames=0”到GRUBCMDLINELINUX變量來實現(xiàn)的。
然后運行這條命令來重新生成GRUB配置并更新內(nèi)核參數(shù)。
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
接下來,編輯(或創(chuàng)建)一個udev的網(wǎng)絡命名規(guī)則文件(/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"
最后,重啟電腦并驗證新的接口名。
請注意,配置重命名后的接口仍然是你的責任。如果網(wǎng)絡配置(例如,IPv4設置,防火墻規(guī)則)是基于舊名稱(變更前)的,則需要更新的網(wǎng)絡配置以反映更改的名稱。謝謝閱讀,希望能幫到大家,請繼續(xù)關注腳本之家,我們會努力分享更多優(yōu)秀的文章。