多網絡卡識別順序的問題

2021-06-07 09:15:09 字數 2796 閱讀 4032

原帖: 

使用linux系統時會出現這樣的情況,當你安裝了某個網絡卡的驅動程式時,或者安裝了與網絡卡相關的程式後。

網絡卡會出現所謂的漂移現象。(注意:不是飄逸)。可能的表象為:

(1):網絡卡順序顛倒,比如之前你的網線連線的網口為eth0,當安裝某個網絡卡的驅動後,可能它的名字變為eth0或者eth3,等等情況。

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

這個確實讓人很惱火。因為有人可能會通過ifconfig | grep eth來獲取資訊從而完成一些開發工作,如果網絡卡名字變得烏七八糟了,程式肯定會出錯。

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

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

第一步,識別誰是誰。

要使用網絡卡,首現要知道哪個名字對應的哪個物理裝置,做法為:從交換機拉一根網線,從上到下挨個接到網絡卡上面,注意每次只能接乙個網絡卡,接上後通過ethtool命令來檢視是否連著網線,比如

[root@as5 ~]# 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@as5 ~]# ifconfig  -a | grep hwaddr

eth0      link encap:ethernet  hwaddr 00:30:48:7f:b5:ca 

eth1      link encap:ethernet  hwaddr 00:30:48:7f:b5:cb 

eth2      link encap:ethernet  hwaddr 00:04:23:a6:81:e0 

eth3      link encap:ethernet  hwaddr 00:04:23:a6:81:e1

拿到了每個網絡卡的mac位址。

第三步:進行mac和網絡卡名稱繫結。

我們都知道,對於redhat的系統,網路的配置檔案在:/etc/sysconfig/network-scripts/ifcfg-ethx

中存著,n=0,1,2。。。

比如:root@as5 ~]# 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的驅動。

linux 如何識別網絡卡順序

由於在尋找這方面的資料,所以特意記錄如下,特別宣告,此文章是引用別人的,而非本人原創。做些什麼才能讓linux執行兩塊乙太網卡?這個問題的答案取決於驅動程式是否被用做可載入的模組或者直接編譯進了核心。大多數 linux發行版本現在都使用模組化的驅動程式。這樣就不用發行許多核心,每種核心設定乙個不同的...

CentOS的網絡卡順序 網絡卡名稱排列

centos中udev對於網絡卡載入的配置 etc udev rules.d 60 net.rules action add subsystem net import lib udev rename device subsystem net run etc sysconfig network scr...

linux下多網絡卡繫結設定問題

一大早來公司,先寫寫昨天對linux下多網絡卡繫結設定問題,共大家批評和指教。說來昨天也是夠lucky,公司要出貨一台裝置,我從庫房中調出三颱裝置測試,結果每台裝置都是出現了問題。庫管都說我可以去買彩票試試,說不定都中獎了 廢話不多說了,趕緊寫好了,把裝置給交出去。問題現象及分析 先說說問題吧。公司...