有時要設定網卡 IP 時常常會搞不清楚哪個是哪張卡.下面可以看的出來嗎??是我就不行了.
再加上之前遇到一個問題就是網絡介面卡的順序,不知道系統是怎麼偵測的,常常在開關機後順序大亂,寫信詢問 RedHat 他們建議我們可以使用 udev.來為每個裝置個別命名.其實概念很簡單先找出目前的網路卡順序.
[[email protected] ~]# cat /etc/moprobe.conf alias eth0 tg3 alias eth1 e1000e alias eth2 e1000e |
目前我的網卡分別是 Broadcom - eth0 , Intel - eth1/eth2 3(eth0/eth1/eth2)個阜.接下來看一下 eth0 在 udev 儲存了哪些資訊.可以使用指令 "udevinfo" 查看.
[[email protected] ~]# udevinfo -ap /sys/class/net/eth0 Udevinfo starts with the device specified by the devpath and then walks up the chain of parent devices. It prints for every device found, all possible attributes in the udev rules key format. A rule to match, can be composed by the attributes of the device and the attributes from one single parent device. looking at device ‘/class/net/eth0‘: looking at parent device ‘/devices/pci0000:00/0000:00:1c.1/0000:03:00.0‘: ID=="0000:03:00.0" looking at parent device ‘/devices/pci0000:00/0000:00:1c.1‘: looking at parent device ‘/devices/pci0000:00‘: |
udev 可以依據裝置特性來個別命名,也就是說剛剛的 eth0 MAC 為 "00:1a:64:22:04:83" 我們就可以依據這個裝置所提供的資訊來個別命名我們網路卡.udev 的設定檔存放在 /etc/udev/rules.d/ 系統已經有一個是專門為網路卡預設的檔案 "60-net.rules"
[[email protected] ~]# cd /etc/udev/rules.d/ |
60-net.rules 是系統預設的 rule
[[email protected] rules.d]# ll total 248 -rw-r--r-- 1 root root 515 Sep 12 17:34 05-udev-early.rules -rw-r--r-- 1 root root 920 Dec 11 06:03 40-multipath.rules -rw-r--r-- 1 root root 15647 Sep 12 17:34 50-udev.rules -rw-r--r-- 1 root root 163 Dec 4 05:32 51-dlm.rules -rw-r--r-- 1 root root 471 Sep 12 17:34 51-hotplug.rules -rw-r--r-- 1 root root 58016 Oct 13 2006 60-libsane.rules -rw-r--r-- 1 root root 143 Nov 13 23:48 60-net.rules -rw-r--r-- 1 root root 1088 Jul 18 2006 60-pcmcia.rules -rw-r--r-- 1 root root 452 Nov 26 07:15 60-raw.rules -rw-r--r-- 1 root root 8209 Sep 22 22:39 60-wacom.rules -rw-r--r-- 1 root root 129 Sep 10 00:11 61-uinput-stddev.rules -rw-r--r-- 1 root root 214 Sep 10 00:11 61-uinput-wacom.rules -rw-r--r-- 1 root root 1823 Sep 19 06:20 85-pcscd_ccid.rules -rw-r--r-- 1 root root 114 Aug 29 2008 90-alsa.rules -rw-r--r-- 1 root root 61 Sep 12 17:34 90-dm.rules -rw-r--r-- 1 root root 82 Oct 10 21:20 90-hal.rules -rw-r--r-- 1 root root 331 Oct 15 00:08 90-ib.rules -rw-r--r-- 1 root root 107 Sep 12 17:34 95-pam-console.rules -rw-r--r-- 1 root root 292 Dec 10 03:27 98-kexec.rules -rw-r--r-- 1 root root 2319 Jul 9 2008 bluetooth.rules -rw-r--r-- 1 root root 590 Dec 19 02:16 xen-backend.rules |
好的我們現在就依 "udevinfo" 所提供的資訊進行裝置名稱改變,我會依據系統的 driver 和 PCI Bus 順序來為我的網卡命名.還記得 eth0 的資訊嗎?
ID=="0000:03:00.0"
DRIVER=="tg3"
其他 eth1 /eth2 都是使用同樣的方法 "udevinfo" 查出 ID 和 Driver
[[email protected] rules.d]# vi 60-net.rules ACTION=="add", SUBSYSTEM=="net", IMPORT{program}="/lib/udev/rename_device" SUBSYSTEM=="net", RUN+="/etc/sysconfig/network-scripts/net.hotplug" DRIVER=="tg3", ID=="0000:03:00.0", NAME="BCM1" DRIVER=="e1000e", ID=="0000:09:00.0", NAME="INTEL0" DRIVER=="e1000e", ID=="0000:09:00.1", NAME="INTEL1" |
重新將模組移除和載入.
[[email protected] rules.d]# rmmod tg3 [[email protected] rules.d]# rmmod e1000e [[email protected] rules.d]# modprobe tg3 [[email protected] rules.d]# modprobe e1000e [[email protected] rules.d]# ifconfig -a|grep -i HWaddr BCM1 Link encap:Ethernet HWaddr 00:1A:64:22:04:83 INTEL0 Link encap:Ethernet HWaddr 00:15:17:78:5D:D6 INTEL1 Link encap:Ethernet HWaddr 00:15:17:78:5D:D7 virbr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00 |
你會發現名稱都依據你的需求改變了. 當然方式是千千萬萬種你也可以依據 MAC Address 的方式作依據.
#KERNEL=="eth*", SYSFS{address}=="00:1a:64:22:04:83", NAME="BCM1"
不過工作還沒完成在 /etc/sysconfig/network-scripts/ 目錄下還是有之前儲存下來的裝置名稱,可以用手動方式移除修改或是用 #system-config-network 來修改!!