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

王林
發布: 2024-03-08 19:07:20
轉載
820 人瀏覽過

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

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

#可能的表象為:

安裝某個網路卡驅動程式後,可能會導致網路卡順序顛倒,例如先前網路線連接的網路卡埠為eth0,但驅動安裝後可能會變成eth1或其他名稱。

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

這種情況確實會讓人感到煩惱。因為有些人可能需要使用ifconfig | grep eth指令來取得資訊進行開發工作,如果網卡名稱混亂不清,那麼程式一定會出現錯誤。

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

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

第一步,辨識網路卡資訊

#要使用網卡,首現要知道哪個名字對應的哪個實體設備,做法為:從交換器拉一條網線,從上到下挨個接到網卡上面,注意每次只能接一個網卡,接上後來透過ethtool指令來查看是否連著網路線,例如

[root@bunian ~]# ethtool eth0
Settings for eth0:
Supported ports: [ MII ]
Supported link modes: 10baseT/Half 10baseT/Full
 100baseT/Half 100baseT/Full
 1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes:10baseT/Half 10baseT/Full
 100baseT/Half 100baseT/Full
 1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 2
Transceiver: external
Auto-negotiation: on
Supports Wake-on: g
Wake-on: d
Link detected: yes
登入後複製

看到了eth0的狀態為連接著網路線。如果Linked detected:no,則表示沒有連接網路線。

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

第二步:取得每個網路卡的MAC位址

ifconfig -a能看到所有網路設備。透過 ifconfig -a | grep HWaddr 來取得每個裝置的MAC位址。

比如:

[root@bunian ~]# ifconfig-a | grep HWaddr
eth0Link encap:EthernetHWaddr 00:30:48:7F:B5:CA
eth1Link encap:EthernetHWaddr 00:30:48:7F:B5:CB
eth2Link encap:EthernetHWaddr 00:04:23:A6:81:E0
eth3Link 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 Ethernet
DEVICE=eth0
ONBOOT=yes
HWADDR=00:30:48:7f:b5:ca
TYPE=Ethernet
NETMASK=255.255.255.0
IPADDR=192.168.42.231
GATEWAY=192.168.42.1
BOOTPROTO=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.conf
alias eth0 forcedeth
alias eth1 forcedeth
alias scsi_hostadapter aic79xx
alias scsi_hostadapter1 sata_nv
alias scsi_hostadapter2 usb-storage
alias eth2 e1000
alias 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網卡辨識順序的綁定方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:mryunwei.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!