[Ubuntu] 解決MAC位址亂跳問題

前不久我剛升級電腦配備,用的是技嘉GA-M56S-S3這塊板子,晶片是Nvidia nForce 560,內建的網路卡是MCP65。安裝Ubuntu7.10後,所有硬體設備都能正常運作,上網也沒有問題,而且可能因為升級的關係,在沒有關掉ipv6的情況下,讀取網頁的速度甚至比之前快上許多。

不過昨天我發現一個不大也不小的問題,就是在我的Ubuntu系統中,網卡的MAC位址居然每次開機都不一樣,原本應該只有一張網卡eth0,但隨著每一次開機就會多產生一張新的網卡,所以到昨天為止eth的數字已經從0增加到eth71,那就代表我從系統重灌好後已經開機七十多次了。說這個問題不大是因為上網一切正常,開機過程也不會產生任何錯誤訊息;但這個問題也不小,因為每次開機後的MAC位址都不同,我就不能在IP分享器裡設定固定IP給我的電腦,所以也不能針對我的電腦開啟特定的port養動物或什麼的。

上Ubuntu官網搜尋一下解決的方法,果不其然,不是只有我有這個問題,目前暫時可行的解決方式如下:

打開/etc/udev/rules.d/70-persistent-net.rules

sudo gedit /etc/udev/rules.d/70-persistent-net.rules

在這個檔案裡會有一大串不斷重覆的網卡ethXX(XX表數字),請刪除多餘的網卡,只留下類似如下這行eth0:

# PCI device 0x10de:0x0450 (forcedeth)
SUBSYSTEM=="net", DRIVERS=="?*",ATTRS{address}=="af:52:de:7d:1d:00", NAME="eth0"


請注意其中這一段:

ATTRS{address}=="af:52:de:7d:1d:00"

其中的MAC位址跟真正的位址可能是相反過來的,待會兒會用另外一種抓取網卡的方式來取代它。

先找出網卡的BUS位址,下指令:

lspci

在跑出來的一大堆訊息中,找到類似如下幾行:

1
2
3
00:02.1 USB Controller: nVidia Corporation MCP65 USB Controller (rev a3)
00:06.0 Ethernet controller: nVidia Corporation MCP65 Ethernet (rev a3)
00:07.0 Audio device: nVidia Corporation MCP65 High Definition Audio (rev a1)

我們需要的就是Ethernet controller前面那個數字:0000:00:06.0(這裡會因不同情況會有不同數值)

把這個數值回填到剛剛提到需要修改的地方,改好後像這樣:

# PCI device 0x10de:0x0450 (forcedeth)
SUBSYSTEM=="net", DRIVERS=="?*", ID=="0000:00:06.0", NAME="eth0"

以上動作會解決不斷產生新網卡的問題,接下來還要再將網卡的MAC位址給固定下來,打開檔案:

sudo gedit /etc/network/interfaces

將檔案內容寫成如下:

1
2
3
4
5
6
auto lo
iface lo inet loopback
 
auto eth0
iface eth0 inet dhcp
pre-up ifconfig eth0 hw ether 00:1d:7d:de:52:af

其中00:1d:7d:de:52:af這段,請自行更改為網卡真實的MAC位址。

重新開機,收工!

發表迴響