■
外網通過防火墻上網,配置好后用戶可以上QQ,但部分網頁打不開,電腦配了DNS地址。懷疑電腦中毒,修復IE瀏覽器,查殺后依是能上QQ,部分網頁打不開。查看防火墻配置,沒有設置封閉80等相關端口。
查看電腦是否能解析無法打開的網頁,命令提示行下輸入nslookup查看本機DNS地址是否正確,結果顯示DNS地址為61.128.128.68(如圖1),輸入無法打開的網頁域名,顯示解析地址為172.107.84.23,171.107.84.29(如圖 2),可以排除DNS的問題。

圖1 DNS地址

圖2 DNS解析

圖3 Ping大包檢測

圖4 防火墻接口MTU值
以我院防火墻為例,應用場景為ADSL應用。通過ATM 2/0/0與運營商的ADSL鏈路相連,內網用戶與防火墻的LAN口相連,通過NAT到防火墻的dialer口訪問公網。
首先使用ping -l 10000 Ping大包看網路是否可達,結果顯示如圖3。
查看防火墻接口MTU值為1500(如圖4)。
我們知道鏈路層具有最大傳輸單元MTU這個特性,它限制了數據幀的最大長度,不同的網絡類型都有一個上限值,在實際數據傳輸過程中,一個報文在網絡中傳輸可以通過多種不同的鏈路,如果報文長度比較大的話,可能出現報文在傳輸過程中,因為長度超過了其中某條鏈路的MTU而無法通過該條鏈路。為了解決該問題,引入了報文分片機制。網絡設備在傳輸報文時,如果設備上配置的MTU(Maximum Transfer Unit)小于報文長度,則會將報文分片后繼續發送。理想情況下,各分片報文將按照固定的先后順序在網絡中傳輸,當終端設備接收到所有分片報文后,再將這些報文重組為一個完整的報文。
網絡設備在處理數據報文傳輸時可能存在以下情況:
1.后續分片報文先于首片報文到達某個網絡設備。
2.后續報文需要在某個中間設備上進行重組后才能繼續傳輸,例如中間設備需要解析報文載荷后才能判斷如何轉發。
當分片報文在傳輸過程中意外丟包,導致報文無法重組成完整報文造丟棄,導致了網頁無法打開。
舉例說明修改MTU值解決部分網站打不開的情況:
經常碰到內網用戶無法訪問外網某些網站,分析其原因為,因內網用戶所接的LAN口為以太網口,設備默認的MTU為1500字節;而對于ADSL應用,業界默認標準MTU一般小于1500字節為1492字節或更低,這樣可能會導致部分報文無法接收完整,當做錯包或者異常數據丟棄了,進而導致內網用戶PC機無法正常打開某些網站。

圖5 MTU檢測

圖 6 減小MTU值

圖7 修改防火墻接口的MTU值
下面列出了一些上網方式的MTU值:

我們可以采用Ping的方式驗證ping -f -l 1500 127.0.0.1, 下 面 以ping www.163.com網站為例進行介紹(如圖5)。
圖5中,-l是L的小寫,1445是我們要測的MTU值,結果出現了Packet needs to be fragmented but DF set.表示MTU值太大了,需要更小的MTU值才行。那假設我們使用1444來測試時,結果出現了Ping包成功(如圖6)。那么1444就是我們要找的值;只要小于1444,都是可以Ping通的,但最佳的值是1444。由于一些封包上面的問題,上面這個值再加上28才是我們所需要的最大MTU值,即1444+28=1472。
修改防火墻接口的MTU值如圖7所示。
修改了防火墻上接口的MTU值后,網絡恢復正常。
在平常網絡維護中,經常遇到“部分網站打不開”、“上網速度慢”等問題,可以依次嘗試從DNS、防火墻策略、接口的MTU值入手,以便快速定位問題。一個報文在網絡中傳輸可以會通過多種不同的鏈路,如果報文長度比較大的話,可能出現報文在傳輸過程中,因為長度超過了其中某條鏈路的MTU而無法通過該條鏈路,在NAT應用中,需要設備對分片報文進行重組后才能正常解析和轉換報文中的IP地址,所以也必須將設備配置成分片緩存狀態,才可以正常進行NAT。