- 問:以 Windows 2000 作為 Server 來連線分享時,為何無法瀏覽一些網站?
- 答:
- 這個問題一直到前一陣子才發現解決之道!我還真是孤陋寡聞的哩!
- 問題說明:
其實不只是 windows 2000 ,就是使用 windows 98 以一些連線分享的軟體來作為頻寬分享工具時,同樣也會有這個問題產生的!就是用戶端無法瀏覽某些網站或是無法發送內含附件的電子郵件。而造成這個問題的原因就是 MTU 的問題啦!什麼是 MTU 呢?那就是 Maximum Transmission Unit 的縮寫!那是啥?其實我也不是很清楚,只知道不同的介面具有不同的 MTU 要求,當 MTU 的需求與你的網路介面不同時,就會有問題發生啦!一般而言,MTU 在網路卡(EtherNet)的預設值為 1500 單位,如果你是在 Linux 系統下的時候,執行 ifconfig eth0 試試看,你會看到如下的畫面:
eth0 Link encap:Ethernet HWaddr 00:01:03:43:E5:34 inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:259763 errors:1 dropped:1 overruns:1 frame:0 TX packets:95076 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 Interrupt:10 Base address:0xc000 |
網路介面 | MTU |
EtherNet (一般的網路介面,這是預設值) | 1500 |
PPPoE(ADSL用的) | 1492 |
Dial-up(modem) | 576 |
由上面的表格我們可以知道,預設的網路介面 MTU 是 1500 ,那 PPPOE 使用的是 1492,自然而然的 MTU 要求並不相同,所以啦!有一些網頁、郵件資料等等的咚咚就無法合理的讓你使用啦!
- 解決之道:
那該如何解決呢? 其實只要調整 Client 端網路卡的 MTU 值即可完全解決此一問題!而且藉由調整 MTU 值也可以增進網路效率呢。 那首要課題自然就是知道你的網路卡所可以負荷的 MTU 啦!因此我們第一步就是要找到適合的 MTU :
- 找出 MTU 值:
在 windows 底下要找出 MTU 值就必須進入 DOS 模式,並且知道你的分享的主機的 IP 才行!例如你的主機是 windows 2000 且對內的分享的 IP 是 192.168.1.2,那麼你可以這麼做:
- 進入 MS DOS 模式;
- 打入 ping -f -l 1500 192.168.1.2
上面的式子中,-l 是 L 的小寫(不是 1 喔),1500 是我們要測的 MTU 值,結果出現了 Packet needs to be fragmented but DF set. 這個東西,那表示MTU值太大了,你需要更小的 MTU 值才行!好啦!那假設我們使用 1464 來測試時:
C:\WINDOWS>ping -f -l 1500 192.168.1.2
Pinging 192.168.1.2 with 1500 bytes of data:
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Ping statistics for 192.168.1.2:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
結果出現了回應了!這表示這一個 MTU 值是可行的!不過,強烈建議找出可行的最大 MTU 值!這樣一來,在設定的時候,才可以達到最佳的網路速率!
C:\WINDOWS>ping -f -l 1464 192.168.1.2
Pinging 192.168.1.2 with 1464 bytes of data:
Reply from 192.168.1.2: bytes=1464 time=10ms TTL=128
Reply from 192.168.1.2: bytes=1464 time<10ms TTL=128
Reply from 192.168.1.2: bytes=1464 time<10ms TTL=128
Reply from 192.168.1.2: bytes=1464 time<10ms TTL=128
Ping statistics for 192.168.1.2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 10ms, Average = 2ms
- 找出 MTU 值:利用上面這個方法找到的數值還不是 MTU 喔!由於一些封包上面的問題,上面這個值再加上 28 才是我們所需要的 MTU 值!所以,在上面的例子中,我們所需要的 MTU 值是 1464+28=1492 啦!
- 修改 MTU 值:
OK!我們已經找出 MTU 值啦,那下一步自然就是修改囉!要如何修改呢?其實也是很簡單,只要透過 Windows 本身預設的 registry 修改即可!
Windows 98:
- 在 『開始』>『執行』中,鍵入
,會出現一個大框框;
- 選擇:『HKEY_Local_Machine』>『System』>『CurrentControlSet』>『Services』>『Class』>『NetTrans』>『000n』
上面最後一個數據是 000n,那個 n 指的是數字,以我為例,在 NetTrans 底下有兩個數字,分別為 0000 與 0002,若按下 0000 會顯示我的 Gate Way 以及我的網路卡的 IP 項目,至於 0002 則沒有我的網路卡的相關資訊,所以 0000 那這一個就是我的網路卡介面啦!請依你的情況選擇!
- 選擇你的網路卡介面後(以我為例,按一下 0000 那一個機碼),按下『編輯』>『新增』,然後選擇增加『DWORD』值;
- 將新增的機碼取名為『MaxMTU』,並且在新增加的那個機碼上面按右鍵,選『修改』,會出現如下畫面,選擇『十進位』後,輸入剛剛我們找到的那一個 MTU 值:
- 改完之後你應該會看到如下的畫面喔!那就是成功了!
Windows 2000:
- 在 『開始』>『執行』中,鍵入
,會出現一個大框框(注意,也有可能是 regedit32 這個執行檔,請依你的機器來作業);
- 選擇『HKEY_Local_Machine』>『SYSTEM』>『CurrentControlSet』>『Services』>『Tcpip』>『Parameters』>『interface』,有點像下面的圖示:
- 在 interface 底下可能有很多的介面,你一個一個的去看,會有一個介面與你的網路卡的 IP 相同,那個就是你要挑選的介面啦!然後同樣的在該介面上選擇『編輯』>『新增』>『DWORD值』之後,建立一個名為『MTU』的機碼,然後選右鍵『修改』,選擇十進位,填入我們剛剛找出來的 MTU 值!大功告成!
查看所有1条评论>>