跳至內容

linux網卡識別順序的綁定方法

更新時間
快连VPN:速度和安全性最佳的VPN服务
快连VPN:速度和安全性最佳的VPN服务

在使用linux系統時,安裝特定網卡驅動程序或相關程序後,可能會出現網卡漂移現象。

可能的表象爲:

在安裝某個網卡驅動程序後,可能會導致網卡順序顛倒,例如之前網線連接的網口爲eth0,但驅動安裝後可能變爲eth1或者其他名字。

(2)網卡名字改變,這種情況倒不是eth0到eth1的改變,而是很詭異的變化,比如eth0找不到了,多了個網卡名字叫 __tmp3183921382193__

這種情況確實會讓人感到煩惱。因爲有些人可能需要使用ifconfig | grep eth命令來獲取信息進行開發工作,如果網卡名稱混亂不清,那麼程序肯定會出現錯誤。

(3)光口網卡和電口網卡順序亂了,或者交叉。

總之我們的目的就是:能夠指定某個網卡的名字爲我們想要的物理設備。做法如下:

第一步,識別網卡信息

要使用網卡,首現要知道哪個名字對應的哪個物理設備,做法爲:從交換機拉一根網線,從上到下挨個接到網卡上面,注意每次只能接一個網卡,接上後通過ethtool命令來查看是否連着網線,比如

[root@bunian ~]# ethtool eth0Settings for eth0:Supported ports: [ MII ]Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/FullSupports auto-negotiation: YesAdvertised link modes:10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/FullAdvertised auto-negotiation: YesSpeed: 100Mb/sDuplex: FullPort: MIIPHYAD: 2Transceiver: externalAuto-negotiation: onSupports Wake-on: gWake-on: dLink detected: yes
登錄後複製

看到了eth0的狀態爲連接着網線。如果Linked detected:no,則說明沒有連接網線。

如此區分開哪個設備的名字是什麼,標註好。

第二步:獲取每個網卡的MAC地址

ifconfig -a能看到所有網絡設備。通過 ifconfig -a | grep HWaddr 來獲取每個設備的MAC地址。

比如:

[root@bunian ~]# ifconfig-a | grep HWaddreth0Link encap:EthernetHWaddr 00:30:48:7F:B5:CAeth1Link encap:EthernetHWaddr 00:30:48:7F:B5:CBeth2Link encap:EthernetHWaddr 00:04:23:A6:81:E0eth3Link encap:EthernetHWaddr 00:04:23:A6:81:E1
登錄後複製

拿到了每個網卡的MAC地址。

第三步:進行MAC和網卡名稱綁定。

我們都知道,對於RedHat的系統,網卡的配置文件在:

/etc/sysconfig/network-scripts/ifcfg-ethX 中存着,X=0,1,2。。。

比如:

[root@bunian]# cat /etc/sysconfig/network-scripts/ifcfg-eth0# nVidia Corporation MCP55 EthernetDEVICE=eth0ONBOOT=yesHWADDR=00:30:48:7f:b5:caTYPE=EthernetNETMASK=255.255.255.0IPADDR=192.168.42.231GATEWAY=192.168.42.1BOOTPROTO=static#NAMESERVER=202.106.0.20
登錄後複製

這個文件是對網卡進行初始化的配置文件。比如如果我們想指定網卡MAC地址爲MAC1的設備名稱爲ethn,那麼,修改文件

/etc/sysconfig/network-scripts/ifcfg-ethn

在裏面添加MAC地址綁定和名字的配置信息

DEVICE=ethn

HWADDR=MAC1(比如00:30:48:7f:b5:ca)

其它配置信息不受影響。當對所有網卡實現綁定後,reboot系統,應該就可以了。

還有一點需要注意,就是驅動對應關係的文件:

/etc/modprobe.conf

要在該文件中修改,確保某個設備使用的就是對應它的驅動,比如:

cat /etc/modprobe.confalias eth0 forcedethalias eth1 forcedethalias scsi_hostadapter aic79xxalias scsi_hostadapter1 sata_nvalias scsi_hostadapter2 usb-storagealias eth2 e1000alias eth3 e1000
登錄後複製

說明eth0和eth1用的forcedeth的驅動,eth2和eth3用的是e1000的驅動。

特殊情況

服務器更換網卡後,MAC地址就會變化,此時啓動Linux系統後原有的eth0、eth1就不是現在網卡的配置文件了,會提示device eth0 does not seem to be present。

解決辦法:

把/etc/udev/rules.d/70-persistent-net.rules 刪除後重啓機器就可以了,因爲這個文件保存了系統底層對網卡的識別信息,包含ethX與MAC對應關係,刪除並重啓讓操作系統重新識別一下現有網卡,即可恢復正常。

另外,如果原有的eth0、eth1配置文件有HWADDR字段,也需要刪除。

以上就是linux網卡識別順序的綁定方法的詳細內容,更多請關注本站其它相關文章!

更新時間

發表留言

請注意,留言須先通過審核才能發佈。