MTU問題


MTU
Maximum Transmission Unit,最大傳輸單元,指的是數據鏈路層的最大payload,由硬件網卡設置MTU,是一個硬性限制。
 
現象一
最近使用ssh工具在VPN環境下連接一個生產環境的Linux主機的時候,發現經常出現輸入命令后卡死的情況。最開始以為是Linux主機的問題,問了一些老同事之后發現原來是我自己電腦的最大傳輸單元MTU和服務器端接受的最大傳輸單元不匹配導致連接不通暢,換用其它電腦連接就不會出現這樣的情況。在前輩的提示之后在網上搜索了一些查看和修改MTU值的方法,動手修改后成功解決了這個問題。
現象二
通過光貓撥號的<-->光貓內網作為路由器WAN地址<-->設備接入路由器DHCP獲取路由器分配的IP地址
光貓MTU和路由器的MTU保持一。家用路由器,MTU值推薦是1480=1472+28.
現象三
ssh遠程登錄linux服務器,隔幾分鍾就超時掉線.
 
參考
路由器中填寫的MTU值是包含28字節包頭的。
例如電腦上ping:ping -f -l 1460 www.baidu.com ,ping試驗得到的最佳包大小為1460字節時,再加上28,將路由器的MTU設為1488。
 
計算機本地MTU值是1500,路由器MTU值默認1480,最大不可超過1492,進入路由設置了1.168.192。
如果是ADSL撥號上網的話,就設置成1492,如果是寬帶上網或者是光纖上網,就設置成1500,mtu值沒有明確規定必須是多少,要根據使用的網絡環境決定。一般設備出廠時都默認是1500。
這個28字節的大小,【ICMP的包頭8字節】+【IP包頭的20字節】,最后再加上實際的數據大小,就是MTU的大小了
 
網上案例
xx移動光貓撥號路由方式時MTU值是1492,路由器一直是1500,導致APP無法正常使用,其他應用未見異常,今天將路由器MTU值也改為1492后,APP能夠正常使用了。
 
Windows查看本機和修改MTU
# 查看MTU
netsh interface ipv4 show subinterfaces
# 測試最大MTU,不通需要返回DF字樣。路由器上MTU,該值需要1472+28=1480
ping -f -l 1472 10.1.252.254
# 修改
netsh interface ipv4 set subinterface "網卡名稱" mtu=1492 store=persistent
 
Linux查看和修改MTU
# 測試MTU
ping -c 2 -M do -s 1472 192.168.86.2
# 查看MTU值
cat /sys/class/net/enp129s0f0/mtu
# 臨時修改
ifconfig eth0 mtu 1472
# 永久修改MTU值
echo '1472' > /sys/class/net/enp129s0f0/mtu
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM