Linux防健忘日誌No.68-Ubuntu 12.04 調整Linux Router PPPoE的MTU解決封包破碎的問題
上次換完Cisco Switch之後果真內網網速非常穩定,再也沒有暴跌內外網網速的問題
但另外一個問題浮現了,應該說本來就存在,只是換了Cisco Switch更凸顯了這個問題
也就是內網電腦上網際網路時,常常無法Load完整個網頁,嚴重一點(例如雅虎新聞就是)是完全無法看到頁面
等到最後是Browser送你一個101錯誤碼…
這問題很不好查,之前就是不知道從那兒下手,所以一直沒正視這個問題
畢竟其他網路功能是正常的,速度也沒影響…常去的網站也是ok
直到了昨天晚上我實在太想當蝙蝠俠,實在很想看那一篇新聞內容…但卻一直無法上去
奇摩子有夠ooxx,自己蝦弄DNS…當然不會成功,不過也造就了我上一篇文章的誕生,也不是一件壞事啦…
最後CALL OUT竹竿格格幫忙支援,果然他之前懷疑MTU是對的,不過一直沒有給他搞個徹底XD
昨天下了一條iptables就解決了
///下面刪除線的地方可能資訊有誤
原因是出在MTU大小(Maximum Transmission Unit) 錯了,不是MTU的問題@@
PPPoE的MTU是1492byte,但Ethernet是1500Byte
所以當我內網要送封包經由Linux Router透過PPPoE出去時,會出代誌…封包將會被切割
不過講到這裡,不禁回想起當初使用pppoeconf這隻指令在設定PPPoE連線時不是應該要自動把MTU調整為1492嗎?
是的,他會調整到對的MTU,但是跟著MTU的還有一個叫做MSS的東西
它們兩個是有關係的,MTU=MSS+IP HEADER(20Byte)+TCP HEADER(20Byte) 所組成的
所以通常MSS的大小是MTU大小減掉40Byte
MSS是Router告訴連線對象要傳來的Layer 4 TCP Segment 大小不能超過所設定的值
超過的話在PPPOE出去會出現問題
真正的問題在於Client(內網的電腦)到Linux Router這一段,MSS設定值上並沒有變成PPPoE規範的1452Byte轉送出去
而是直接維持1460Mbyte到ppp0出去,所以封包會被切割
///以下都沒錯,請安心服用
而MSS又是什麼東西呢?
是Maximum Segmet Size的縮寫,其實就是實際傳輸資料量
下面這張圖可以看到TCP Segmet的結構,刪除TCP Header(32Byte)之後,Data部分就是MSS(為變量可調)
但今天不知道為甚麼pppoeconf設定MTU的同時卻沒有跟著連動MSS
所以導致MSS大小可能過大(或許還在1460Byte,小於符合與MTU的差距),造成通過封包切割
簡而言之,標題下的有點複雜,簡單來說發生封包被切割的時候可能會出現以下問題
1.如果有些封包不允許被切割(擁有DF bit 也就是don’t fragmet 不准切割的封包),再傳送出去網際網路之前,將會被丟棄,導致內網無法開啟一些網頁或者服務
2.不知道為甚麼Ubuntu 的 pppoeconf沒有一起調整MSS
今天就是要教大家怎麼手動調整MSS
用ifconfig或者ip link可以看到MTU大小
但MSS不行,所以要確保MSS與MTU間保持40Byte的差距時
手動強制設置MSS的大小
因為我的環境是pppoe聯外的Linux Server(當router)
所以都是以pppoe的最佳化MTU跟MSS
封包大小是個很重要的問題,因為除了pppoe會遇到
做Tunnel跟VPN還有IPsec等不同的情況下會有不同的MTU值,如果我上面講的都看得懂
要自己算出最佳數值不是問題
至於pppoe封包為何是1492Byte,與一般ethernet的封包1500Byte少了8Byte,這裡竹竿格格也有解釋
這裡稍作整理~
Layer-2 的 Frame Size最大允許為1518Byte
而Frame Header占掉18Byte
所以扣除Frame Header,得到Layer-3的 IP Packet 最大大小為1500Byte
而pppoe則是把IP Packet 再裝進一個 PPP Frame裡面
所以會多出PPP Frame的Header,佔8Byte
整個裝進IP Packet的PPP Packet不能超過原先的1500Byte,所以剩下來可以裝載其他部分的就剩下1492Byte也就是PPPoE的MTU
廢話不多說(靠杯是說很多了吧…),其實今天實做的步驟很簡單,只要一條iptables:
iptables -t mangle -A FORWARD -p tcp –tcp-flags SYN,RST SYN -j TCPMSS –set-mss 1440
可以很明顯看得出來該改哪邊吧~~
我是把這條一樣放在之前那幾篇網誌做的腳本再一起~,自行參考放置位置了!
這篇科普的成分比較多,不過要了解背景知識再來應用才是對的喔~
thx for:
竹竿格格
http://david50.pixnet.net/blog/post/748196-%E4%BD%95%E8%AC%82%22mtu%22
http://cappella.dante.com.tw/GuestBook/show.asp?Id=3420
http://www.kume.idv.tw/tags-MTU.html
http://en.wikipedia.org/wiki/Maximum_segment_size
http://en.wikipedia.org/wiki/Maximum_transmission_unit
http://blog.xuite.net/beavisliu/blog/15106473
http://ranjanbhandari.blogspot.tw/2010/07/tcp-explained.html
http://youadmin.wikispaces.com/SEC_NET_theory_tcp+packet (圖片出處)
voyance gratuite en direct
Linux防健忘日誌No.68-Ubuntu 12.04 調整Linux Router PPPoE的MTU解決封包破碎的問題 @ Nathaniel-終端機人生 :: 痞客邦 PIXNET ::
http://www.voyantpartelephone.org
Linux防健忘日誌No.68-Ubuntu 12.04 調整Linux Router PPPoE的MTU解決封包破碎的問題 @ Nathaniel-終端機人生 :: 痞客邦 PIXNET ::
Suzuki GSXR
Linux防健忘日誌No.68-Ubuntu 12.04 調整Linux Router PPPoE的MTU解決封包破碎的問題 @ Nathaniel-終端機人生 :: 痞客邦 PIXNET ::
jeu de tarot gratuit
Linux防健忘日誌No.68-Ubuntu 12.04 調整Linux Router PPPoE的MTU解決封包破碎的問題 @ Nathaniel-終端機人生 :: 痞客邦 PIXNET ::
tarot gratuit en ligne
Linux防健忘日誌No.68-Ubuntu 12.04 調整Linux Router PPPoE的MTU解決封包破碎的問題 @ Nathaniel-終端機人生 :: 痞客邦 PIXNET ::
voyance gratuite amour
Linux防健忘日誌No.68-Ubuntu 12.04 調整Linux Router PPPoE的MTU解決封包破碎的問題 @ Nathaniel-終端機人生 :: 痞客邦 PIXNET ::
voyant
Linux防健忘日誌No.68-Ubuntu 12.04 調整Linux Router PPPoE的MTU解決封包破碎的問題 @ Nathaniel-終端機人生 :: 痞客邦 PIXNET ::
match en direct
Linux防健忘日誌No.68-Ubuntu 12.04 調整Linux Router PPPoE的MTU解決封包破碎的問題 @ Nathaniel-終端機人生 :: 痞客邦 PIXNET ::
match en direct
Linux防健忘日誌No.68-Ubuntu 12.04 調整Linux Router PPPoE的MTU解決封包破碎的問題 @ Nathaniel-終端機人生 :: 痞客邦 PIXNET ::
20.00ok.kr
Linux防健忘日誌No.68-Ubuntu 12.04 調整Linux Router PPPoE的MTU解決封包破碎的問題 @ Nathaniel-終端機人生 :: 痞客邦 PIXNET ::
voyance amour
Linux防健忘日誌No.68-Ubuntu 12.04 調整Linux Router PPPoE的MTU解決封包破碎的問題 @ Nathaniel-終端機人生 :: 痞客邦 PIXNET ::
voyance discount
Linux防健忘日誌No.68-Ubuntu 12.04 調整Linux Router PPPoE的MTU解決封包破碎的問題 @ Nathaniel-終端機人生 :: 痞客邦 PIXNET ::
voyance gratuite par mail
Linux防健忘日誌No.68-Ubuntu 12.04 調整Linux Router PPPoE的MTU解決封包破碎的問題 @ Nathaniel-終端機人生 :: 痞客邦 PIXNET ::
voyance amoureuse
Linux防健忘日誌No.68-Ubuntu 12.04 調整Linux Router PPPoE的MTU解決封包破碎的問題 @ Nathaniel-終端機人生 :: 痞客邦 PIXNET ::
voyance gratuite audiotel
Linux防健忘日誌No.68-Ubuntu 12.04 調整Linux Router PPPoE的MTU解決封包破碎的問題 @ Nathaniel-終端機人生 :: 痞客邦 PIXNET ::
Website URL
Linux防健忘日誌No.68-Ubuntu 12.04 調整Linux Router PPPoE的MTU解決封包破碎的問題 @ Nathaniel-終端機人生 :: 痞客邦 PIXNET ::
pompe a chaleur geothermie
Linux防健忘日誌No.68-Ubuntu 12.04 調整Linux Router PPPoE的MTU解決封包破碎的問題 @ Nathaniel-終端機人生 :: 痞客邦 PIXNET ::
installation pompe à chaleur
Linux防健忘日誌No.68-Ubuntu 12.04 調整Linux Router PPPoE的MTU解決封包破碎的問題 @ Nathaniel-終端機人生 :: 痞客邦 PIXNET ::
pac air eau
Linux防健忘日誌No.68-Ubuntu 12.04 調整Linux Router PPPoE的MTU解決封包破碎的問題 @ Nathaniel-終端機人生 :: 痞客邦 PIXNET ::
pompe à chaleur piscine
Linux防健忘日誌No.68-Ubuntu 12.04 調整Linux Router PPPoE的MTU解決封包破碎的問題 @ Nathaniel-終端機人生 :: 痞客邦 PIXNET ::
this content
linux防健忘日誜no.68-ubuntu 12.04 調整linux router pppoe的mtu解決封圅破碞的問顜 @ nathaniel-終端?人? :: 痞客邦 pixnet ::