當前位置:才華齋>網路>網路診斷>

Linux網路故障診斷方法

網路診斷 閱讀(3.26W)

由於實現網路伺服器的層次結構比較多,因此當網路出現故障時,解決起來比較複雜。下面由我來為大家詳細介紹Linux系統中可能出現的一些網路問題,如網絡卡硬體問題、網路配置問題、驅動程式問題,以及網路層、傳輸層、應用層問題等。

Linux網路故障診斷方法

網絡卡故障可以分為硬體故障和軟體故障,判斷硬體故障最簡單的方法是把該網絡卡插到其它計算機上使用,如果還是老毛病則網絡卡損壞,否則網絡卡正常。實際情況下,大部分網絡卡出現的故障都屬於軟體故障,軟體故障一般分為兩類:一類為設定故障;一類為驅動程式故障。

  診斷網絡卡故障

[root@localhost ~]#dmesg | grep eth

eth0:registered as PCnet/PCI II 79C970A

eth0:link up

eth0:no IPv6 routers present

[root@localhost ~]#

以上命令列出了引導資訊中包含eth字串的行,如果出現類似與“eth0:link up”的提示,表示Linux已經檢測到了網絡卡,並處於正常工作狀態。還有一條lspci命令可以列出系統檢測到所有PCI裝置,如果使用的網絡卡是PCI匯流排的,應該能看到這塊網絡卡的資訊。最後可以用ethtool檢視乙太網的鏈路連線是否正常。

以上命令列出了引導資訊中包含eth字串的行,如果出現類似與“eth0:link up”的提示,表示Linux已經檢測到了網絡卡,並處於正常工作狀態。還有一條lspci命令可以列出系統檢測到所有PCI裝置,如果使用的網絡卡是PCI匯流排的,應該能看到這塊網絡卡的資訊。最後可以用ethtool檢視乙太網的.鏈路連線是否正常。

[root@localhost ~]#ethtool eth0

Settings for eth0:

Current message level: 0x00000007 (7)

Link detected:yes

[root@localhost ~]#

如果看到“Link detected:yes”一行,表明網絡卡也對方的網路線路連線是正常的。

  網絡卡驅動程式

在RHEL 6中,需要先檢視或者設定/etc/檔案,它包含了有關模組的安裝和別名資訊。

[root@localhost ~]#more /etc/

alias scsi_hostadapter mptbase

...

alias eth0 pcnet32

[root@localhost ~]#

以上顯示中,最後一行“alias eth0 pcnet32”表示為pcnet32定義了一個別名eth0,也就是說,目前使用的乙太網卡介面eth0對應的模組是pcnet32,可以使用一下命令當前系統裝載的模組中是否有pcnet32模組。

[root@localhost 2.6.18-8.e15]#lsmod | grep pcnet32

pcnet32 35269 0

mii 9409 1 pcnet32

[root@localhost 2.6.18-8.e15]#

可以發現,pcnet32已經安裝。因此,如果網絡卡已經被Linux檢測到,但執行“ipconfig -a”命令時卻看不到eth0介面,可以按照以上方法把網絡卡的驅動程式模組找到,再看看這個模組是否已經安裝。

  診斷網路層問題

網路層問題診斷方法很簡單,就是直接ping外網的某一個域名或者IP,能正常連通的,則說明網路層沒有問題。

引起ping不同的原因很多,可能會是網路線路、網路設定、路由和ARP等問題。建議先ping一下閘道器,看是否能通,如果與閘道器能通,一般就表明網路線路、自己機子的網路設定和ARP都沒有問題。可以通過命令“route -n”顯示路由表,然後得到閘道器的地址。如果路由表中沒有設定預設閘道器,則表明路由設定有問題,此時需要設定預設閘道器。

有時,區域網記憶體在ARP攻擊或者其它原因,使本機ARP快取中的閘道器IP的MAC地址是錯誤的,這樣也會造成與閘道器ping不通。此時,可以使用“arp -d <閘道器 IP>”命令刪除閘道器的ARP條目,或者通過“arp -a <閘道器 IP><閘道器 MAC>”命令設定靜態ARP條目。

  診斷傳輸層和應用層問題

診斷傳輸層和應用層的故障最有效的一種手段是使用抓包工具抓取資料包進行分析。在Linux中,預設提供了tcpdump工具,利用它可以抓取所有訪問本機或者從本機出去的資料包,並且可以通過規則只抓取感興趣的資料包。

作業系統有關的一種可能的故障原因是防火牆配置不當。在Linux中,預設情況下系統啟動時會啟用iptables防火牆,而且只放行少數幾個埠。所以當在本機上配置了某種服務時,而這種服務需要通過TCP或UDP的某個端口才能訪問,則要求防火牆開啟相應的埠,否則,其它主機將不能訪問本機的這種服務。