附錄一:網路連線的錯誤排除-通常在網路連線時會遇到很多問題,我們可以一步一步從最源頭來看是哪個部份出了問題!!
1.硬體有抓到嗎?
第一點就是要看系統有沒有抓到網路卡?最快的方式是透過 #lspci 來看.
[root@Benjr ~]# lspci 00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX – 82443BX/ZX/DX Host bridge (rev 01) 00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX – 82443BX/ZX/DX AGP bridge (rev 01) 00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 08) 00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01) 00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08) 00:0f.0 VGA compatible controller: VMware Inc Abstract SVGA II Adapter 00:10.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01) 00:11.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)
可以看到我的網卡 Ethernet controller: Advanced Micro Devices 有被系統認出來,而且沒有認錯,不過當你的網路卡硬體太新時系統會顯示該裝置是一個 Unknown 的裝置,其實不需緊張.系統知道有該裝置,但是他不知道這個裝置名稱而已, 在 Linux 下是依據 /usr/share/hwdata/pci.ids 來轉換硬體裝置成為硬體裝置名稱.
如何更新 /usr/share/hwdata/pci.ids 可以參考這個網頁 http://pciids.sourceforge.net/ 方法如: 更新 pci.ids
但如果系統是看不到這一個裝置(連 unknown 都沒有時),那可以試試其他的 PCI, PCI-E 插槽,真的不行請洽你的硬體製造商看是否有提供新版的 BIOS 可以解決這個問題.
2.模組有上嗎?
看得到裝置不代表模組有上,可以使用 #lsmod 來查看.先來看看我們網卡使用哪一個模組,在 /etc/modprobe.conf 可以查出目前的網路裝置是使用什麼模組. <- RHEL 6 以上的版本不再採用 /etc/modprobe.conf 設定方式,詳細說明請參考 https://benjr.tw/10594
[root@benjr ~]# cat /etc/modprobe.conf alias eth0 pcnet32
很好!網路卡模組是 pcnet32,透過 #lsmod 那看一下是不是有載入到系統上.
[root@benjr ~]# lsmod | grep -i pcnet32 mii 9281 1 pcnet32
太好了到目前為止系統都有辨識到這張網卡.
通常世界不是完美的,在這個階段如果 #lsmod 沒看到可以用 #modprobe pcnet32 來手動上模組(請依你的實際硬體模組來上).如果顯示錯誤(可以用 #dmesg 來檢視) 那就是作業系統提供的 driver (module) 不支援目前這張網路卡,那只好親自到網卡的製造商網站下載即可.
這邊使用 Intel 的 E1000 為範例.首先在 Intel 的網站會找到 E1000 的 Linux driver (module).driver 通常是 .tar.gz 的模式.因為 Linux driver (module) 需要先編輯後才能使用,這時候我們需要用到 Kernel-devel 套件,請在編輯前先安裝這一個 rpm 檔案.
[root@Benjr ~]# rpm -aq |grep -i kernel kernel-smp-2.6.9-78.EL kernel-hugemem-devel-2.6.9-78.EL kernel-2.6.9-78.EL kernel-devel-2.6.9-78.EL kernel-xenU-devel-2.6.9-78.EL kernel-smp-devel-2.6.9-78.EL kernel-utils-2.4-14.1.117
很好我的 Linux 系統有安裝.現在就開始編輯 E1000 的 driver (module) .
[root@Benjr ~]# tar zxvf e1000-8.0.6.tar.gz [root@Benjr ~]# cd e1000-8.0.6/src/ [root@Benjr src]# make;make install [root@Benjr src]# modinfo e1000 filename: /lib/modules/2.6.9-78.ELsmp/kernel/drivers/net/e1000/e1000.ko parm: copybreak:Maximum size of packet that is copied to a new buffer on receive author: Intel Corporation, <linux.nics@intel.com> description: Intel(R) PRO/1000 Network Driver license: GPL version: 8.0.6-NAPI 198DA055157AE8751CB6722 [root@Benjr src]# modprobe e1000
#make 是編輯,而 #make install 是會把 Linux driver (module) 放置在系統規定的地方,你可以透過 #modinfo e1000 先檢查一下版本是否如預期.接下來使用 #modprobe e1000 你會發現新的模組已經上上去了.
但 SLES11 採用 "supported" flag 的方式辨識這 driver(kernel modules) 是否經過 SLES(Novell) 的認證,所以要使用 SLES11 尚未認證的 driver(kernel modules) 解決方式有兩種.
1.setup "allow_unsupported_modules " in /etc/modprobe.d/unsupported_modules as "1"
2.#modprobe module allow_unsupported_modules
http://www.novell.com/support/search.do?
3.線路有通嗎?
這裡還沒談到連上 Internet 而是確定你的網卡已經連接上 Hub/Switch.這邊提供三個指令來查看目前網路的線路狀態, dmesg , mii-tool , ethtool.
[root@benjr ~]# dmesg |grep eth0 eth0: link up, 100Mbps, full-duplex... .... [root@benjr ~]# mii-tool eth0: negotiated 100baseTx-FD flow-control, link ok [root@benjr ~]# ethtool eth0 Settings for eth0: Supported ports: [ TP ] 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: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on Supports Wake-on: umbg Wake-on: g Current message level: 0×00000003 (3)
顯示 link ok 或是 Speed: 1000Mb/s 代表網路卡目前已經是通的狀態.但如果你看到的是下面的 no link 或是 Unknown 狀態.就需要確定一下網路線是否有接對,是否要用 crossover 的線還是根本就沒接線(鬆脫,掉落).
[root@benjr ~]# mii-tool eth0: no link [root@benjr ~]# ethtool eth0 Settings for eth0: Supported ports: [ TP ] 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: Unknown! (65535) Duplex: Unknown! (255) Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on Supports Wake-on: umbg Wake-on: g Current message level: 0×00000003 (3) Link detected: no
4.ADSL
線路通了這時就需要連上 Internet 關於 ADSL 的設定. 請參考 設定 ADSL
5.防火牆 iptables
如果在連線時有些服務無法使用或是怪怪的可能是防火牆 iptables 設定不正確導致,請參考關於 防火牆 iptables .
/usr/share/hwdata/pci.ids 是给kudzu用,和lspci 没有出现unknown应该是内核的ids文件问题!