FlossDoc: 請協力 GPLv3 的中文翻譯工作。
修正網絡介面名稱
FlossDoc,自由中文開源知識庫
| 標準文章 | |
|---|---|
| 作者: | Roy Chan |
| 協力: | - |
| 校對: | - |
| 級別: | 初階 |
| 分享本文: | |
擁有多個網絡介面 (network interface) 的電腦經常會出現介面名稱混亂的情況。Linux 核心傳統上會根據辨認到網絡介面的次序去決定哪個是 eth0,哪個是 eth1。但遇然在改變硬體配置或核心後可能會改變網絡介面被辨認次序而改變介面被指定的名稱。這往往會打亂您原先的系統設定。例如您建立了一個分享互聯網連線或以 Linux 架設 VLAN 等,您可能會依系統把對外網絡介面命名為 eth0 內部網絡介面為 eth1 的情況來設定路由表 (routing table) 、防火牆 (firewall) 和其他伺服器。如果系統突然兩個網絡介面名稱搞亂,對外網絡介面變成 eth1,內部網絡介面變成 eth0,會令整個系統不能運作。如果您要管理多台閘道門 (Gateway),統一固定的網絡介面名稱編排就更重要。
現時大部份 GNU/Linux 都使用 udev 管理硬體裝置。udev 在開機時會記下曾使過網絡介面的 MAC 地址及其他資訊,待下次使用的相同的網絡介面時,可以根據 MAC 地址設定和上次一樣的網絡介面名稱。這令網絡介面名稱不會胡亂改變﹐避免了以上問題。
然而在一些情況下,存放 GNU/Linux 的硬碟會經常在多台不同的電腦中互換。因為不同電腦有不同的 MAC 地址,udev 反而會把網絡介面指定成其他新命稱,而令原先的介面 eth0 懸空,會令整個系統不能運作。要解決這問題,我們需要改變 udev 命名網絡介面的規則。
目录 |
Debian 4.0、OpenSUSE 10.3、Ubuntu 7.10、Fedora 8、RHEL 6 和 CentOS 6.x 或以上
Debian 4.0、OpenSUSE 10.3、Ubuntu 7.10、Fedora 8、RHEL 6 和 CentOS 6.x 或以上都是由 udev 的 persistent-net.rules 規則決定網絡介面的名稱。除 Debian 4.0 的 persistent-net.rules 規則在 /etc/udev/rules.d/z25_persistent-net.rules 外,其他 distro 包括 Debian 5.0 都放在 /etc/udev/rules.d/70-persistent-net.rules,全部設定方法都一樣:
# This file was automatically generated by the /lib/udev/write_net_rules
# program, probably run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single line.
# MAC addresses must be written in lowercase.
# Firewire device 000ac606203a402e (ohci1394)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:0d:a4:e5:02:44:e0:62", NAME="eth0"
# PCI device 0x8086:0x119b (e1000)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:26:d3:32:a3:c8", NAME="eth1"
您可以把 eth0 的 ATTRS{address} 欄改成 ATTRS{address}=="?*" 令第一個測出的網絡介面被指定為 eth0。亦可以把 DRIVERS 改成 DRIVERS=="e1000" 令第一個測出的 e1000 網絡介面被指定為 eth0。
Debian 3.1 和 Ubuntu 6.06 至 7.04
Debian 3.1 和 Ubunbtu 6.06 設定網絡介面名稱方法不同,但要固定網絡介面名稱都是使用檔案 /etc/iftab:
# This file assigns persistent names to network interfaces. # See iftab(5) for syntax. eth0 mac 00:26:d3:32:a3:c8 arp 1 eth1 mac 00:23:02:2b:4c:a7 arp 1
Ubunut 預設就有 iftab,而 Debian 3.1 就需要先安裝套件 ifrename 再自行建立 /etc/iftab:
su -c 'apt-get install ifrename'
Fedora 7、CentOS 5.x 和 RHEL 5
Fedora 7、CentOS 5.x 和 RHEL 5 等的網絡介面名稱直接在 /etc/sysconfig/network-scripts/ifcfg-* 決定:
# Intel Corporation 82573L Gigabit Ethernet Controller DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp HWADDR=00:26:d3:32:a3:c8
SuSE 10 至 OpenSUSE 10.2
SuSE 10 至 OpenSUSE 10.2 由 /ec/udev/rules.d/30-net_persistent_names.rules 決定網絡介面名稱:
SUBSYSTEM=="net", ACTION=="add", SYSFS{address}=="00:23:02:2b:4c:a7", IMPORT="/sbin/rename_netiface %k eth1"
SUBSYSTEM=="net", ACTION=="add", SYSFS{address}=="00:26:d3:32:a3:c8", IMPORT="/sbin/rename_netiface %k eth0"
請參看
外部連結
- Nail Down Network Interface Names with ifrename
- Dell Linux: Linux Enumeration of NICs v3.0
- Figaro 學習網: 於 SUSE Linux 中修改網路設備名稱 - 小技巧
- Linux Forums: how to change ethX to ethY












