linux可以ping通,Linux可以Ping通但不能traceroute
今天閑來無事,想弄清楚學(xué)校至百度服務(wù)器的網(wǎng)絡(luò)問題,結(jié)果不試不知道,一試嚇一跳。完全出乎我的意料。我們學(xué)校的網(wǎng)關(guān)是172.21.6.254,172.21.4.254和172.21.7.254。發(fā)現(xiàn)可以ping通學(xué)校網(wǎng)關(guān),卻不能traceroute。如下圖:
這是為什么?查了一下資料:windows的tracert預(yù)設(shè)是走ICMP協(xié)議,而linux的traceroute則預(yù)設(shè)走UDP協(xié)議,若兩端點之間的UDP connection被任何firewall擋掉, 那 traceroute 就不行了.
原因好像大概知道了,就是有firewall把udp給擋掉了。解決方法:traceroute -I 加I參數(shù)改用ICMP協(xié)議。即下圖,果然成功了。
可以發(fā)現(xiàn),從我的服務(wù)器到達(dá)百度服務(wù)器經(jīng)過了21跳。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22traceroute to baidu.com (123.125.115.110), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 實驗室路由器
2 172.21.6.254 (172.21.6.254) 學(xué)校網(wǎng)關(guān)內(nèi)接口
3 172.21.200.5 (172.21.200.5) 學(xué)校網(wǎng)關(guān)外接口
4 172.30.201.6 (172.30.201.6) 本地局域網(wǎng)
5 211.71.94.251 (211.71.94.251) 北京市朝陽區(qū) 教育網(wǎng)
6 124.207.38.253 (124.207.38.253) 北京市 鵬博士寬帶
7 * * * (有的就是這么設(shè)置,便于隱藏)
8 10.10.1.1 (10.10.1.1) 4.997 ms 本地局域網(wǎng)
9 218.241.251.105 (218.241.251.105) 北京市 鵬博士寬帶
10 218.241.253.241 (218.241.253.241) 北京市 鵬博士寬帶
11 218.241.245.181 (218.241.245.181) 北京市 鵬博士寬帶
12 202.99.1.173 (202.99.1.173) 北京市 鵬博士寬帶
13 * * *
14 * * *
15 202.106.42.97 (202.106.42.97) 北京市北京市 聯(lián)通
16 61.148.154.97 (61.148.154.97) 北京市 聯(lián)通
17 * * *
18 61.148.146.194 (61.148.146.194) 北京市 聯(lián)通
19 61.49.168.98 (61.49.168.98) 北京市 聯(lián)通
20 * * *
21 123.125.115.110 (123.125.115.110) 北京市 聯(lián)通 (百度服務(wù)器)
那么我們就來了解一下traceroute的工作原理:Traceroute是用來偵測主機(jī)到目的主機(jī)之間所經(jīng)路由情況的重要工具,也是最便利的工具。前面說到,盡管ping工具也可以進(jìn)行偵測,但是,因為ip頭的限制,ping不能完全的記錄下所經(jīng)過的路由器。所以Traceroute正好就填補(bǔ)了這個缺憾。Traceroute的原理是非常非常的有意思,它受到目的主機(jī)的IP后,首先給目的主機(jī)發(fā)送一個TTL=1(還記得TTL是什么嗎?)的UDP(后面就 知道UDP是什么了)數(shù)據(jù)包,而經(jīng)過的第一個路由器收到這個數(shù)據(jù)包以后,就自動把TTL減1,而TTL變?yōu)?以后,路由器就把這個包給拋棄了,并同時產(chǎn)生 一個主機(jī)不可達(dá)的ICMP數(shù)據(jù)報給主機(jī)。主機(jī)收到這個數(shù)據(jù)報以后再發(fā)一個TTL=2的UDP數(shù)據(jù)報給目的主機(jī),然后刺激第二個路由器給主機(jī)發(fā)ICMP數(shù)據(jù) 報。如此往復(fù)直到到達(dá)目的主機(jī)。這樣,traceroute就拿到了所有的路由器ip。從而避開了ip頭只能記錄有限路由IP的問題。
有人要問,我怎么知道UDP到?jīng)]到達(dá)目的主機(jī)呢?這就涉及一個技巧的問題,TCP和UDP協(xié)議有一個端口號定義,而普通的網(wǎng)絡(luò)程序只監(jiān)控少數(shù)的幾個號碼較 小的端口,比如說80,比如說23,等等。而traceroute發(fā)送的是端口號>30000(真變態(tài))的UDP報,所以到達(dá)目的主機(jī)的時候,目的 主機(jī)只能發(fā)送一個端口不可達(dá)的ICMP數(shù)據(jù)報給主機(jī)。主機(jī)接到這個報告以后就知道,主機(jī)到了,所以,說Traceroute是一個騙子一點也不為過
Traceroute程序里面提供了一些很有用的選項,甚至包含了IP選路的選項。
當(dāng)我以為終于弄懂得時候,我發(fā)現(xiàn)還是太年輕了,在windows我又手賤的試了一下,又發(fā)現(xiàn)了問題。為什么windows下也能ping通,但不能traceroute呢?
欲知結(jié)果如何,還是待我知道以后。
總結(jié)
以上是生活随笔為你收集整理的linux可以ping通,Linux可以Ping通但不能traceroute的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux c语言 readline,L
- 下一篇: linux删除文件退出,在Linux中用