Linux有問必答:如何在CentOS7上改變網路介面名
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設置,防火牆規則)是基於舊名稱(變更前)的,則需要更新的網路配置以反映更改的名稱。
via: http://ask.xmodulo.com/change-network-interface-name-centos7.html
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive