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