用 ping, route, traceroute 來偵測網路問題!
其實,網路一出問題的時候,您應該從自己可以檢查的地方檢查起,因此,最重要的地方,就是您的網路卡是否有工作的問題啦!檢查網路卡是否正常工作的方法如下:
- 使用 lsmod 看看網路卡的模組是否已被載入:
除非您曾經自行編譯過核心,否則網路卡的驅動程式應該是以模組的型態存在才對!由於網路卡是最基本的網路元件之一啦!沒有他,自然也就無法連上 Internet ,所以囉,請先確認一下您的網路卡是否已經被驅動吧!這個時候當然就要使用 lsmod 來看看啦!呵呵!沒錯!我的網路卡已經掛上去啦!所以沒有問題!那麼如果沒有發現呢?嗯!那麼很可能是沒有捉到硬體囉!這個時候請先以 dmesg 確認一下是否已經捉到了網路卡囉!
[root@test root]# lsmod
Module Size Used by Tainted: P
ipt_MASQUERADE 1216 1 (autoclean)
iptable_filter 1696 1 (autoclean)
ip_conntrack_irc 2592 0 (unused)
ip_conntrack_ftp 3328 0 (unused)
ip_nat_irc 2400 0 (unused)
ip_nat_ftp 2976 0 (unused)
iptable_nat 13588 3 [ipt_MASQUERADE ip_nat_irc ip_nat_ftp]
ip_tables 11232 5 [ipt_MASQUERADE iptable_filter iptable_nat]
ip_conntrack 13356 3 [ipt_MASQUERADE ip_conntrack_irc ip_conntrack_ftp ip_nat_irc ip_nat_ftp iptable_nat]
ppp_async 6240 1 (autoclean)
8139too 14208 2 <==這個就是我的螃蟹卡模組啦!
usbcore 29632 0 (unused)嗯!確實是有捉到我的網路卡啦!是 Ethernet 的網路卡呦!
[root@test root]# dmesg
....略....
PPP generic driver version 2.4.1
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 4096 bind 4096)
Linux IP multicast router 0.06 plus PIM-SM
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
VFS: Mounted root (ext2 filesystem) readonly.
8139too Fast Ethernet driver 0.9.24 <==確實有捉到囉!
eth0: RealTek RTL8139 Fast Ethernet at 0x6100, 00:50:fc:22:9c:57, IRQ 10
eth0: Identified 8139 chip type 'RTL-8139C'
eth1: RealTek RTL8139 Fast Ethernet at 0x6300, 00:50:fc:22:9a:cb, IRQ 11
eth1: Identified 8139 chip type 'RTL-8139C'
eth0: Setting half-duplex based on auto-negotiated partner ability 0000.
eth1: Setting 100mbps full-duplex based on auto-negotiated partner ability 41e1.
- 使用 ifconfig 看看是否有網路卡的運作出現:
在確定網路卡已經被捉到之後,硬體就沒有問題了,再來就是網路卡的軟體設定問題。通常使用了 ifconfig 之後,會出現目前網路卡的 IP 狀態說明,如果沒有任何網路硬體被驅動的話,那就以 ifup eth0 來啟動,再以 ifconfig 來看看網路設備的運作!如果還是沒有辦法啟動的話,就需要來重新安裝網路卡的驅動程式!如何確定網路卡有無正常工作呢?簡單的很,就是使用 ifconfig 這個指令來檢查一下吧!如上所示,是我的網路的設定,我共有兩個網路卡,設備名稱分別為 eth0 (對內,私有 IP )及 eth1 (對外),而由於我是使用 ADSL 撥接的,所以就有 ppp0 這個網路介面囉!至於第三個 lo 是主機內部的遞迴網路,這是每部機器都會有的。如上所述,那我的三個介面都有出來,並且 eth0 的 IP 是 192.168.1.2 這一個,那就表示設備應該沒有問題才對!如果想要確定一下到底網路有沒有通,您可以使用 ping 的功能:
[root@test root]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:50:FC:22:9A:CB
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:35747 errors:0 dropped:0 overruns:0 frame:0
TX packets:38701 errors:0 dropped:0 overruns:0 carrier:0
collisions:567 txqueuelen:100
Interrupt:11 Base address:0x6300eth1 Link encap:Ethernet HWaddr 00:90:CC:08:49:13
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:79570 errors:0 dropped:0 overruns:0 frame:0
TX packets:69642 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:10 Base address:0x6100lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:4553 errors:0 dropped:0 overruns:0 frame:0
TX packets:4553 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0ppp0 Link encap:Point-to-Point Protocol
inet addr:140.116.141.114 P-t-P:140.116.141.253 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:27577 errors:0 dropped:0 overruns:0 frame:0
TX packets:25980 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10如果有回應的話,如上面所示,那就是正常啦!
[root@test root]# ping -c 5 192.168.1.2
PING 192.168.1.2 (192.168.1.2) from 192.168.1.2 : 56(84) bytes of data.
64 bytes from 192.168.1.2: icmp_seq=0 ttl=255 time=0.2 ms
64 bytes from 192.168.1.2: icmp_seq=1 ttl=255 time=0.2 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=255 time=0.2 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=255 time=0.2 ms
64 bytes from 192.168.1.2: icmp_seq=4 ttl=255 time=0.1 ms--- 192.168.1.2 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.1/0.1/0.2 ms
- 不必撥接的已知固定式 IP 的檢查方式:
假如已經知道您的公共 IP 、 通訊閘 (GateWay),且不必撥接的情況 (Giga 的 ADSL 不算這一種!),您可以直接修改 /etc/sysconfig/network 以及 /etc/sysconfig/network-scripts/ifcfg-eth0 這兩個檔案,然後以 ifup eth0 啟動網路卡,並以 ping 您的網路卡 IP 來看看是否有正常工作。例如上面的範例,需要注意的地方是在 GATEWAY=及 GATEWAYDEV=eth0 這個地方 (只需要有一個即可) ,例如成大環工的 gateway IP 是 140.116.44.253 ,那您只要將您的 gate way 設定成那個 IP 就是了(就是 GATEWAY=140.116.44.253 )!而您的公共 IP 的修改方法為:
[root@test root]# vi /etc/sysconfig/network
NETWORKING=yes
FORWARD_IPV4=yes
HOSTNAME=your.domain.name在上面的例子中,您的 IP 是 140.116.44.125,則您可以廣播的位址共有 140.116.44.1-255( 140.116.44.255那一個 ),而您的子遮罩網路為 255.255.255.0。好了!都設定完成之後,那就直接以下面的方式來啟動:
[root@test root]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
BROADCAST=140.116.44.255
IPADDR=140.116.44.125
NETMASK=255.255.255.0
NETWORK=140.116.44.0
GATEWAY=140.116.44.253
ONBOOT=yes看看網路卡是否正常的啟動了呢?
[root@test root]# /etc/rc.d/init.d/network restart
[root@test root]# ifup eth0
[root@test root]# ping -c 5 140.116.44.125
- 需撥接的網路卡 IP :
通常建議直接在 /etc/sysconfig/network 及 /etc/sysconfig/network-scripts/ifcfg-eth0 中,給予一個虛擬 IP 後,再 ping 您的網路卡 IP 。這是由於撥接式 ADSL 在撥接之前是沒有公共 IP 的,所以我們先以私有 IP 來測試看看網路卡是否可以正常啟動吧:網友們最常發生問題的地方在於,您是以 eth1 來作為撥接的網路卡,但是卻將 GATEWAYDEV 設定成 eth0 ,那樣的話,您對外要求的封包將都會透過 eth0 這個私有 IP 的網路卡向外要求資料,由於私有 IP 沒有辦法連上 Internet ,所以,您的網路就完全上不了 Internet 啦!所以這裡的設定要注意一下囉!
[root @test /root]# vi /etc/sysconfig/network
NETWORKING=yes
FORWARD_IPV4=yes
HOSTNAME=your.domain.name在上面的例子中,您將網路卡的私有 IP 設定成為 192.168.1.2 這一個!有一個習慣的錯誤在於將 BOOTPROTO ( 通訊協定 ) 設定成 DHCP ,這是不對的,因為您的網路是透過撥接的方式,在撥接的過程中就會由 rp-pppoe 撥接程式連接到 ISP 以 PPP 協定來設定好您自己的網路參數,所以這裡設定 DHCP 是沒有意義的!這裡只要設定成 none 就行了!千萬注意了!然後再以下面的方式來確認網路卡的運作與否:
[root @test /root]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
BROADCAST=192.168.1.255
IPADDR=192.168.1.2
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=no
GATEWAYDEV=ppp0請注意呦!這個部分不需要修改也沒有關係,如果您的設定是『 ONBOOT=no 』,嘿嘿!所以開機的時候並不會啟動網路卡,那麼實際撥接的時候就不會有干擾囉!如果需要啟動撥接系統來確認撥接是否可行,可以按照上面的方式修改完兩個檔案,然後將 adsl-setup 設定完成,之後以下面的方式來啟動 ADSL 試試看:
[root@test root]# /etc/rc.d/init.d/network restart
[root@test root]# ifup eth0
[root@test root]# ping -c 5 192.168.1.2事實上,在 ADSL 撥接之前有沒有啟動 eth0 都沒有關係,不過,有時候就是那麼懸疑,啟動了 eth0 就是沒有辦法撥接成功,那麼您就可以將 eth0 先關閉再進行撥接試看看,通常就可以成功了。啟動之後,再以 ping 的方式來確定一下網路:
[root@test root]# ifdown eth0
[root@test root]# /etc/rc.d/init.d/network restart
[root@test root]# adsl-start如果確定可以連上 Internet 之後,就將 adsl-start 寫進 /etc/rc.d/rc.local 中吧!
[root@test root]# ping -c 5 your.IP
[root@test root]# ping -c 5 168.95.1.1
[root@test root]# ping -c 5 tw.yahoo.com
- 重新安裝網路卡驅動程式:
如果上面的方式都沒有辦法來正常啟動您的網路卡時,那就只好再捉一次您的網路卡驅動程式了。首先看看驅動程式對不對吧! 假設您買的是螃蟹卡,那麼您的 /etc/modules.conf 內容就會有點像這樣 ( 在 Red Hat 6.x 以前的檔案,檔名為 /etc/conf.modules !):在上面的例子中,由於我有兩塊網路卡,第一塊是屬於螃蟹卡 (晶片為 RelTeck8139) ,第二塊是 VIA 的晶片 ( 直接以 viarhine 來驅動 ) 第三行是將 viarhine 這個晶片驅動的意思。萬一您插了兩張相同的網路卡,那要如何來區分網路卡的先後次序呢?!例如插了兩塊 rtl8139 的網路卡,那您可以這樣寫 ( 增加 io 及 irq 的控制參數 ):
[root@test root]# vi /etc/modules.conf
alias eth0 rtl8139
alias eth1 viarhine上面是說,兩塊卡的io 與 irq 分別為 0x300, 3 及 0x320, 5。至於這方面的相關資訊,您可以進入 windows 系統中看過 ( 所以說,可以安裝成多成作業系統啦! ) 再來修改吧!好了,那如果要重新安裝網路卡的驅動程式呢?!嗯!翻回連上 Internet 那一章節察看吧!通常的網路卡驅動程式安裝方法步驟如下:
[root@test root]# vi /etc/modules.conf
alias eth0 rtl8139
alias eth1 rtl8139
options rtl8139 io=0x300,0x320 irq=3,5
- 下載您的網路卡驅動程式;
- 編譯並安裝模組;
- 修改 /etc/conf.module 檔案;
- 修改 /etc/sysconfig/network 檔案;
- 修改 /etc/sysconfig/network-scripts/ifcfg-eth0 檔案;
- 以 ifup eth0 來啟動您的 網路卡 試試看囉!
您只要將您的網路設備與您的晶片名稱寫上正確的,再加上將該晶片的驅動程式編譯完成,並擺在 /lib/modules/`uname -r`/kernel/drivers/net 裡面即可 ( 若核心為 2.2.xx 則需要擺在 /lib/modules/2.X.X/net裡面即可囉!)
VBird 的建議: 其實,在架設 Linux 伺服器的過程中,大概最麻煩的地方就是在網路的設定這裡了,尤其是後續的一些區域網路的連線設定 ( 如果涉及 NAT 主機來分享網路頻寬的話,將會更麻煩! ) ,所以這裡 VBird 要給大家一個建議,就是遇到網路卡設定的瓶頸的時候,乾脆先買一塊很便宜,但是支援度很高的螃蟹卡 ( 我去大賣場看過,最便宜的只要 250 不到就有了! ) ,先將網路架設起來再說!否則一個新手花了很多的時間去搞一塊莫名的網路卡,常常會磨損一個 Linux 愛好者的耐心!
[root@test root]# ping -c 5 192.168.1.100 |
在一般正常的情況之下,當您下達 route 這個指令的時候,您的路由表 ( route table ) 應該會很快的顯示出來,如果萬一不幸顯示的速度非常之慢,那麼通常就是您的網路設定可能『有點怪怪的』,當然啦,如果是您的系統還有設定了 IP alias 的話,那麼就真的會有點慢慢的~不過沒有關係,我們還是可以來測試一下是否有問題呢!?
[root@test root]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
140.116.141.253 * 255.255.255.255 UH 0 0 0 ppp0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default 140.116.141.253 0.0.0.0 UG 0 0 0 ppp0
請注意,由於我有兩塊網路卡( 一塊對內一塊對外,我的系統架構就如同 圖一 所顯示的那樣! ),加上我是以撥接的方式連上 Internet 的,所以自然就會有 eth0, eth1, ppp0 及本來就會有的 lo 這三個介面,而由於 eth1 這個介面是依附在 ppp0 上面的( 我的 ppp0 的撥接介面卡使用的是 eth1 呦!),所以自然也就沒有 eth1 這個介面的設定!好了,那麼我的路由介面自然就應該會有 eth0, ppp0, lo 這三個啦!那由於 lo 是 127.0.0.1 ,加上他是 A Class 的網路迴圈,因此就會得到上面的那一行!同時,我的預設通訊閘自然選擇可以連上 Internet 的 ppp0 那塊,所以也就成為 default 那一行囉!無論如何,我的 route 可以這樣就設定妥當沒有問題!
如果發生錯的話,最常發生在這個地方的情況就是有點像底下的樣子:
[root@test root]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
140.116.141.253 * 255.255.255.255 UH 0 0 0 ppp0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default 192.168.1.2 0.0.0.0 UG 0 0 0 eth0
發現哪裡有問題了嗎?對啦!那個 default 怎麼 gateway 為 192.168.1.2 呢?對啦!唯一有問題的地方就是在那兒!因為預設的 GATEWAY 變成了 192.168.1.2 這個私有 IP ,自然無法連接上 Internet ,那麼當您使用『ping -c 5 202.1.237.21』當然也就會顯示出封包遞送的 IP 為 192.168.1.2 ,呵呵!完全連不出去!怎麼辦?!很簡單啦!除了手動以 route 這個指令修改之外,也可以修改 /etc/sysconfig/network-scripts/ifcfg-eth0 這個檔案,將裡頭的 GATEWAY 或 GATEWAYDEV 的設定修正一下,就可以啦!加油!!
如果通過上面的問題確認,這個時候您的網路情況應該是:該如何是好!?嘿嘿!這時就需要注意您的 DNS 設定了!通常,如果是 DNS 設定的問題的時候,發生的現象是這樣的:(我們以雅虎站 tw.yahoo.com, IP:202.1.237.21 來說明)
- 網路卡與室內的連線材料都是好的;
- 並且區域網路內的電腦都可以互通;
- 同時,adsl-start 已經正確的工作了;
- ping IP 可以 ping 的到,但是可能沒有辦法以瀏覽器直接瀏覽網站。
這時就需要改變您的主機的 DNS 設定了!您可以修改 /etc/resolv.conf 檔案:
- 以 IP 來 ping 雅虎有資料可以傳遞:
有點像這樣:
[root@test root]# ping -c 5 202.1.237.21
PING 202.1.237.21 (202.1.237.21) from 211.74.152.23 : 56(84) bytes of data.
64 bytes from 202.1.237.21: icmp_seq=0 ttl=246 time=103.6 ms
64 bytes from 202.1.237.21: icmp_seq=1 ttl=246 time=105.3 ms
64 bytes from 202.1.237.21: icmp_seq=3 ttl=246 time=112.8 ms
64 bytes from 202.1.237.21: icmp_seq=4 ttl=246 time=87.7 ms
64 bytes from 202.1.237.21: icmp_seq=5 ttl=246 time=92.0 ms--- 202.1.237.21 ping statistics ---
6 packets transmitted, 5 packets received, 16% packet loss
round-trip min/avg/max = 87.7/100.2/112.8 ms- 以 領域名稱 來 ping 卻沒有回應:
有點像這樣:
[root@test root]# ping -c 5 tw.yahoo.com
ping: unknown host tw.yahoo.com
[root@test root]# vi /etc/resolv.conf
nameserver 168.95.1.1
nameserver 139.175.10.20
nameserver 163.28.113.1
上面只是一個簡單的表示方法,您的主要的 DNS 主機為 168.95.1.1 (Hinet的 DNS 主機),而備用的 DNS 則為 139.175.10.20 及 163.28.113.1 這兩個。何謂備用的 DNS 主機呢?這是由於 168.95.1.1 可能會因為某些正常或不正常原因而停止服務的時候,則您的主機只要偵測不到 主要 DNS 主機,將會繼續往下尋找另一個 DNS 主機,直到沒有 DNS 主機為止。通常我至少都會設定兩個以上。
NAT 可以先簡單的想成是一個 IP 分享器,NAT 無法正確的工作原因有很多,不過,如果您確定您的區域網路連線已經正常,而且主機可以正確的連上 Internet,另外,用戶端的 DNS 設定也是正確的(這一步常常有人搞錯!),那麼可能發生的問題大概就是沒有將 IPv4 打開吧!雖然 /etc/sysconfig/network 當中已經設定了FORWARD_IPV4=yes 的項目,但是仍然有可能沒有開啟這一個項目,那麼就以下面的指令來開啟吧!echo 1 > /proc/sys/net/ipv4/ip_forward您可以將這個指令寫入 /etc/rc.d/rc.local 這個檔案中。另外,還有一點,就是您的 GateWay 設定錯誤了!這個在上面的 network 檔案說明中已經提到了,您可以再詳細的看一看!或者是使用 route -n 這個指令來察看一下您的 route table (路由表)例如:仔細看到上面喔:
[root@test root]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.2 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
172.16.11.8 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 172.16.11.8 0.0.0.0 UG 0 0 0 ppp0
- 第六行顯示您的對內網域為 192.168.1.0 這一個,且在 Iface 的地方,顯示了您的界面卡使用的是 eth0 這一個界面卡;
瞭解了嗎?對內與對外的 route table 是不一樣的,如果您的對外 Iface 顯示 eth0 的話,那就表示您的路由設定錯誤了!這時您就必須要修改一下您的 /etc/sysconfig/network-scripts/ifcfg-eth0 檔案囉!然後再以
- 另外,您的對外通訊閘(就是最後一行,由於是對外,所以會寫出 0.0.0.0 的 Destination )是以 172.16.11.8 這一個,且您的介面是 ppp0 這一個!
/etc/rc.d/init.d/network restart來重新啟動!
除了這些問題之外,您的 ipchains/iptables 是否正確的工作呢?這都需要注意的!而在 Red Hat 7.X 的版本之後,由於 ipchains 與 iptables 並存的環境下,會有問題發生,因此您必須取消任何一個防火牆機制才行!如果對於 ipchains 與 iptables 不是很熟悉的話,可以看一下這一篇討論:小州先生的 iptables 相關 NAT 與安全防護說明:好了!除了這些問題之外,還有一個小問題,就是發生在 Windows 的系統中,可能會有 MTU 的問題存在,也就是說,可能有部分的網站您沒有辦法連上去,那要如何是好?您可以翻到前一章去看一看如何修改您的 MTU 吧!至於更多的 NAT 功能與錯誤確認,我們會在 NAT 主機的設定一節再詳細的說明喔!
http://linux.vbird.org/linux_server/0150detect_network_1.php
在您確認了上面的幾個問題點之後,大概已經可以讓您的網路暢通了!不過,如果還是沒有辦法連上 Internet 呢?那就很有可能是外部的問題了!我們需要注意的大概是這樣:基本上,前兩點都很好解決,直接看一下 ADSL 的燈號就可以知道是否正常了!第三點才是我們這裡所要探討的!萬一您從成大要連線到您高雄家中的以 seednet 作為 ISP 的您的主機時,您可以使用 traceroute 這樣做:
- ADSL 的 modem 燈號是否都是正常的?如果不正常的話,先處理 modem 吧!
- 連接到中華電信的 gateway 是否正常?這可以從 ifconfig 當中得到的資訊,去 ping 那個 gateway 試試看!再不然的話,直接打電話到中華電信的機房去詢問一下是否有問題;
- 是否有部分的 router 出現問題了:
在這樣的過程中,您就可以知道,您向您家中要求的資料封包是怎樣傳送的!而一個一個的去瞭解到底您的網路傳輸速度是在哪一個環節被擋了下來而有延遲的問題!又例如我從家裡連線到雅虎的網站時,資料封包時如何傳送的呢?例如下面的說明:
[root@test root]# traceroute tsai.adsldns.org
traceroute to tsai.adsldns.org (211.74.251.208), 30 hops max, 38 byte packets
1 140.116.44.253 (140.116.44.253) 7.373 ms 8.732 ms 9.560 ms
2 203.72.191.42 (203.72.191.42) 0.932 ms 1.050 ms 0.716 ms
3 203.72.191.218 (203.72.191.218) 0.906 ms 1.209 ms 0.867 ms
4 R56-161.seed.net.tw (139.175.56.161) 2.229 ms 1.877 ms 2.154 ms
5 R58-38.seed.net.tw (139.175.58.38) 3.283 ms 3.639 ms 5.303 ms
6 br011008.seed.net.tw (139.175.11.8) 4.344 ms 3.941 ms 3.602 ms
7 swks251-208.adsl.seed.net.tw (211.74.251.208) 50.058 ms 52.567 ms 53.109 ms最後面出現了 * 的符號,這表示從 203.69.65.65 這一個 router 到下一個 router 的過程中可能有點小問題,所以造成了您的網路有點不是很正常的情況發生!這時您就必須要去瞭解下原因了。像早先新竹的一條光纜被挖斷的時候,由於那條光纜是主要的網路幹道之一,所以被挖斷了,將使得資料封包必須經過東部的以及備份的網路流量較小的備援網路系統來處理,所以也就造成大塞車的問題了!另外,本站前一陣子由於教育部的 UPS 在進行維護的工程,結果也是導致成大部分的網路流量受阻,造成我們的網友無法連線進來的結果,您可以到鳥哥的私房菜首頁(http://linux.vbird.org)看一下在 2001/12/6-10 日之間的公告,這樣的檢驗也可以讓我們瞭解到網路流量的瓶頸喔!
[root@test root]# /usr/sbin/traceroute tw.yahoo.com
traceroute to tw.yahoo.com (202.1.237.21), 30 hops max, 38 byte packets
1 172.16.11.8 (172.16.11.8) 46.181 ms 45.028 ms 39.722 ms
2 139.175.15.1 (139.175.15.1) 37.972 ms 36.554 ms 40.228 ms
3 R58-194.seed.net.tw (139.175.58.194) 45.332 ms 46.370 ms 46.140 ms
4 R58-90.seed.net.tw (139.175.58.90) 46.814 ms 55.286 ms 46.401 ms
5 211.22.41.174 (211.22.41.174) 46.326 ms 57.491 ms 45.398 ms
6 211.22.35.230 (211.22.35.230) 46.813 ms 57.740 ms 46.117 ms
7 211.22.35.169 (211.22.35.169) 46.319 ms 51.316 ms 52.549 ms
8 203.69.65.65 (203.69.65.65) 46.342 ms 46.185 ms 58.698 ms
9 * * *
另外一個常見的問題是,無法登入主機執行『某些』功能,也就是說,您可以 ping 的到網路上的某部主機,但是就是無法執行這個主機的某些特定的功能,例如 FTP, WWW, mail 等等。以鳥哥的某個主機為例,我的主機僅提供 mail 及 www 的服務,因此您使用 telnet 及 ftp 都是沒有用的!所以囉,必須先去瞭解到該主機提供的服務才行!
那如果是您的主機呢?最常見到的就是新版的 Linux 中,ftp 與 telnet 已經預設不開放了!那您當然無法以 ftp 及 telnet 連接到您的主機裡面!這時,就必須要到 /etc/xinetd.d 去修改幾個服務的設定,以 telnet 為例,您可以在 /etc/xinetd.d/telnet 中看到如下的咚咚:看看上面,請將 disable = yes 改成 disable = no 就可以開啟啦!然後再以 /etc/rc.d/init.d/xinetd restart 來啟動您的 telnet 服務!不過,基本上也有可能是 firewall 擋住了您的服務通道,這時,就需要先開啟防火牆了!
[root@test root]# vi /etc/xinetd.d/telnet
service telnet
{
disable = yes
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}
還有一個要檢查的是各個檔案或者是程序的權限了!例如您的 /etc/hosts.allow 中是否有開啟?您的 mail server 是否有設定 relay ?您的 httpd.conf 中是否有開放 PHP 或者是 MySQL 的服務,或者是其他相關的 CGI 程式執行的可行性?您的 FTP 是否有開放匿名登入?等等等,都是需要特別的檢查的,不過,這都屬於一般性的 FAQ 了,這裡就不多做說明。