網卡是Linux服務器中最重要網絡設備。據統計,Linux網絡故障有35%在物理層、25%在數據鏈路層、10%在網絡層、10%在傳輸層、10%在對話、7%在表示層、3%在應用層。由此可以看出,網絡
故障通常發生在網絡七層模型的下三層,即物理層、鏈路層和網絡層。對應于實際網絡也就是使用的網絡線纜、網卡、交換機、路由器等設備故障。Linux的網絡實現是模仿FreeBSD的,它支持FreeBSD的帶有擴展的Sockets(套接字)和TCP/IP協議。它支持兩個主機間的網絡連接和Sockets通訊模型,實現了兩種類型的Sockets:BSD Sockets和INET Sockets。它為不同的通信模型和服務質量提供了兩種傳輸協議,即不可靠的、基于消息的UDP傳輸協議和可靠的、基于流的傳輸協議TCP,并且都是在IP網絡協議上實現的。INET sockets是在以上兩個協議及IP協議之上實現的。它們之間的關系見圖1所示。
圖1 Linux網絡模型
由于交換機、路由器通常獨立于Linux或者其他操作系統。網卡設置故障是造成Linux 服務器故障最主要原因。可能因為硬件的質量或性能、磨損老化、人為誤操作、不正確的網絡設置、管理問題、Linux軟件的BUG、系統受到黑客攻擊和Linux病毒等原因造成。
Linux 服務器網卡故障排除的思路是:應當遵循先硬件后軟件的方法。因為硬件如果出現物理損壞那么如何設定網卡都不能解決故障。解決問題的方法可以從自身Linux計算機的網卡查起,如果確定硬件沒有問題了,再來考慮軟件的設定。
1.網卡的選擇
一般來說,2.4版本以后的 Linux可以支持的網卡芯片組數量已經很完備了,包括著名廠商如:Intel 以及使用廣泛的 RealTek, Via 等網卡芯片都已經被支持,所以使用者可以很輕易的設定好他們的網絡卡。但是由于Linux發行版本眾多(目前超過188個),使用前最好查看Linux發行版本的文檔。以Redhat Linux 9.0為例,這個設備列表在Ethernet- HOWTO文檔中。另外最直接的方法是查看一個目錄:/lib/modules/release/kernel/drivers/net,其中release是內核版本,可以使用命令:“uname -r”獲得。對于Redhat Linux 9.0是2.4.20-8。
可以看到這個目錄列出所有Linux內核支持的網絡設備驅動程序。其中大部分是以太網卡(8139、3COM、Intel)。也有一些是其他類型設備。對于初學者應當盡量選擇目錄中已經列出的網卡。注意以.o 后綴結束的文件就是驅動程序。而沒有后綴的是驅動程序目錄(紅色)。