在網路的互助論壇中,最常聽到的一句話就是:『高手求救!我的 Linux 不能連上網路了!』我的天吶!不能上網路的原因多的很!而要完全搞懂也不是一件簡單的事情呢! 不過,事實上我們可以自己使用測試軟體來追蹤可能的錯誤原因,而很多的網路偵測指令其實在 Linux 裡頭已經都預設存在了,只要您好好的學一學基本的偵測指令,那麼一些朋友在告訴您如何偵錯的時候, 您應該就立刻可以知道如何來搞定他囉!好了,底下我們就簡單的來談一談幾個很基本的網路常用的偵錯指令啦! ping這個 ping 是很重要的指令,ping 主要透過 ICMP 封包 來進行整個網路的狀況報告,當然啦,最重要的就是那個 ICMP type 0, 8 這兩個類型, 分別是要求回報與主動回報網路狀態是否存在的特性。要特別注意的是, ping 還是需要透過 IP 封包來傳送 ICMP 封包的, 而 IP 封包裡面有個相當重要的 TTL (Time To Live) 屬性,這是很重要的一個路由特性, 詳細的 IP 與 ICMP 表頭資料請參考網路基礎的詳細介紹。[root@linux ~]# ping [-bcstnM] IP
參數:
-b :後面接的是 broadcast 的 IP,用在你『需要對整個網域的主機進行 ping 』時;
-c :後面接的是執行 ping 的次數,例如 -c 5 ;
-n :不進行 IP 與主機名稱的反查,直接使用 IP ;
-s :發送出去的 ICMP 封包大小,預設為 56(bytes),再加 8 bytes 的 ICMP 表頭資料
-t :TTL 的數值,預設是 255,每經過一個節點就會少一;
-M [do|dont] :主要在偵測網路的 MTU 數值大小,兩個常見的項目是:
do :代表傳送一個 DF (Don‘t Fragment) 旗標,讓封包不能重新拆包與打包;
dont:代表不要傳送 DF 旗標,表示封包可以在其他主機上拆包與打包
範例一:偵測一下 168.95.1.1 這部 DNS 主機是否存在?
[root@linux ~]# ping -c 3 168.95.1.1
PING 168.95.1.1 (168.95.1.1) 56(84) bytes of data.
64 bytes from 168.95.1.1: icmp_seq=0 ttl=243 time=9.16 ms
64 bytes from 168.95.1.1: icmp_seq=1 ttl=243 time=8.98 ms
64 bytes from 168.95.1.1: icmp_seq=2 ttl=243 time=8.80 ms
--- 168.95.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 8.807/8.986/9.163/0.164 ms, pipe 2
ping 最簡單的功能就是傳送 ICMP 封包去要求對方主機回應是否存在於網路環境中, 上面的回應訊息當中,幾個重要的項目是這樣的:64 bytes:表示這次傳送的 ICMP 封包大小為 64 bytes 這麼大,這是預設值, 在某些特殊場合中,例如要搜索整個網路內最大的 MTU 時,可以使用 -s 2000 之類的數值來取代; icmp_seq=0:ICMP 所偵測進行的次數,第一次編號為 0 ; ttl=243:TTL 與 IP 封包內的 TTL 是相同的,每經過一個帶有 MAC 的節點 (node) 時,例如 router, bridge 時, TTL 就會減少一,預設的 TTL 為 255 , 你可以透過 -t 150 之類的方法來重新設定預設 TTL 數值; time=9.16 ms:回應時間,單位有 ms(0.001秒)及 us(0.000001秒), 一般來說,越小的回應時間,表示兩部主機之間的網路連線越良好! 如果你忘記加上 -c 3 這樣的規定偵測次數,那就得要使用 [ctrl]-c 將他結束掉了!範例二:針對整個網域進行 ping 的追查
[root@linux ~]# ping -c 3 -b 192.168.10.255
WARNING: pinging broadcast address |