■
外網(wǎng)通過(guò)防火墻上網(wǎng),配置好后用戶可以上QQ,但部分網(wǎng)頁(yè)打不開(kāi),電腦配了DNS地址。懷疑電腦中毒,修復(fù)IE瀏覽器,查殺后依是能上QQ,部分網(wǎng)頁(yè)打不開(kāi)。查看防火墻配置,沒(méi)有設(shè)置封閉80等相關(guān)端口。
查看電腦是否能解析無(wú)法打開(kāi)的網(wǎng)頁(yè),命令提示行下輸入nslookup查看本機(jī)DNS地址是否正確,結(jié)果顯示DNS地址為61.128.128.68(如圖1),輸入無(wú)法打開(kāi)的網(wǎng)頁(yè)域名,顯示解析地址為172.107.84.23,171.107.84.29(如圖 2),可以排除DNS的問(wèn)題。
圖1 DNS地址
圖2 DNS解析
圖3 Ping大包檢測(cè)
圖4 防火墻接口MTU值
以我院防火墻為例,應(yīng)用場(chǎng)景為ADSL應(yīng)用。通過(guò)ATM 2/0/0與運(yùn)營(yíng)商的ADSL鏈路相連,內(nèi)網(wǎng)用戶與防火墻的LAN口相連,通過(guò)NAT到防火墻的dialer口訪問(wèn)公網(wǎng)。
首先使用ping -l 10000 Ping大包看網(wǎng)路是否可達(dá),結(jié)果顯示如圖3。
查看防火墻接口MTU值為1500(如圖4)。
我們知道鏈路層具有最大傳輸單元MTU這個(gè)特性,它限制了數(shù)據(jù)幀的最大長(zhǎng)度,不同的網(wǎng)絡(luò)類型都有一個(gè)上限值,在實(shí)際數(shù)據(jù)傳輸過(guò)程中,一個(gè)報(bào)文在網(wǎng)絡(luò)中傳輸可以通過(guò)多種不同的鏈路,如果報(bào)文長(zhǎng)度比較大的話,可能出現(xiàn)報(bào)文在傳輸過(guò)程中,因?yàn)殚L(zhǎng)度超過(guò)了其中某條鏈路的MTU而無(wú)法通過(guò)該條鏈路。為了解決該問(wèn)題,引入了報(bào)文分片機(jī)制。網(wǎng)絡(luò)設(shè)備在傳輸報(bào)文時(shí),如果設(shè)備上配置的MTU(Maximum Transfer Unit)小于報(bào)文長(zhǎng)度,則會(huì)將報(bào)文分片后繼續(xù)發(fā)送。理想情況下,各分片報(bào)文將按照固定的先后順序在網(wǎng)絡(luò)中傳輸,當(dāng)終端設(shè)備接收到所有分片報(bào)文后,再將這些報(bào)文重組為一個(gè)完整的報(bào)文。
網(wǎng)絡(luò)設(shè)備在處理數(shù)據(jù)報(bào)文傳輸時(shí)可能存在以下情況:
1.后續(xù)分片報(bào)文先于首片報(bào)文到達(dá)某個(gè)網(wǎng)絡(luò)設(shè)備。
2.后續(xù)報(bào)文需要在某個(gè)中間設(shè)備上進(jìn)行重組后才能繼續(xù)傳輸,例如中間設(shè)備需要解析報(bào)文載荷后才能判斷如何轉(zhuǎn)發(fā)。
當(dāng)分片報(bào)文在傳輸過(guò)程中意外丟包,導(dǎo)致報(bào)文無(wú)法重組成完整報(bào)文造丟棄,導(dǎo)致了網(wǎng)頁(yè)無(wú)法打開(kāi)。
舉例說(shuō)明修改MTU值解決部分網(wǎng)站打不開(kāi)的情況:
經(jīng)常碰到內(nèi)網(wǎng)用戶無(wú)法訪問(wèn)外網(wǎng)某些網(wǎng)站,分析其原因?yàn)椋騼?nèi)網(wǎng)用戶所接的LAN口為以太網(wǎng)口,設(shè)備默認(rèn)的MTU為1500字節(jié);而對(duì)于ADSL應(yīng)用,業(yè)界默認(rèn)標(biāo)準(zhǔn)MTU一般小于1500字節(jié)為1492字節(jié)或更低,這樣可能會(huì)導(dǎo)致部分報(bào)文無(wú)法接收完整,當(dāng)做錯(cuò)包或者異常數(shù)據(jù)丟棄了,進(jìn)而導(dǎo)致內(nèi)網(wǎng)用戶PC機(jī)無(wú)法正常打開(kāi)某些網(wǎng)站。
圖5 MTU檢測(cè)
圖 6 減小MTU值
圖7 修改防火墻接口的MTU值
下面列出了一些上網(wǎng)方式的MTU值:
我們可以采用Ping的方式驗(yàn)證ping -f -l 1500 127.0.0.1, 下 面 以ping www.163.com網(wǎng)站為例進(jìn)行介紹(如圖5)。
圖5中,-l是L的小寫(xiě),1445是我們要測(cè)的MTU值,結(jié)果出現(xiàn)了Packet needs to be fragmented but DF set.表示MTU值太大了,需要更小的MTU值才行。那假設(shè)我們使用1444來(lái)測(cè)試時(shí),結(jié)果出現(xiàn)了Ping包成功(如圖6)。那么1444就是我們要找的值;只要小于1444,都是可以Ping通的,但最佳的值是1444。由于一些封包上面的問(wèn)題,上面這個(gè)值再加上28才是我們所需要的最大MTU值,即1444+28=1472。
修改防火墻接口的MTU值如圖7所示。
修改了防火墻上接口的MTU值后,網(wǎng)絡(luò)恢復(fù)正常。
在平常網(wǎng)絡(luò)維護(hù)中,經(jīng)常遇到“部分網(wǎng)站打不開(kāi)”、“上網(wǎng)速度慢”等問(wèn)題,可以依次嘗試從DNS、防火墻策略、接口的MTU值入手,以便快速定位問(wèn)題。一個(gè)報(bào)文在網(wǎng)絡(luò)中傳輸可以會(huì)通過(guò)多種不同的鏈路,如果報(bào)文長(zhǎng)度比較大的話,可能出現(xiàn)報(bào)文在傳輸過(guò)程中,因?yàn)殚L(zhǎng)度超過(guò)了其中某條鏈路的MTU而無(wú)法通過(guò)該條鏈路,在NAT應(yīng)用中,需要設(shè)備對(duì)分片報(bào)文進(jìn)行重組后才能正常解析和轉(zhuǎn)換報(bào)文中的IP地址,所以也必須將設(shè)備配置成分片緩存狀態(tài),才可以正常進(jìn)行NAT。