MTU:最大网络传输单元,计算机网络课会介绍。
场景:
本地通过VPN连接某个机房内网的linux服务器,连接上之后,运行top命令、vi命令、yum update等需要刷新大量内容时导致ssh卡死,但重连后发现命令最后会自己执行完成。
在网上找了一下解决办法,发现是MTU的问题,但怎么确定本地应该配置什么MTU值呢?实测发现可参考:http://t.zoukankan.com/keystone-p-11410659.html
具体:
- 在本地运行如下所示ping命令,含义:发送大小包大小是1460(+28)字节,禁止路由器拆分数据包。
linux下探测MTU值:
ping -s 1460 -M do baidu.com windows下探测MTU值:
ping -f -l 1460 baidu.com
根据ping的结果分开处理
- 如果正常回复,继续尝试增加网络包的值,直至不会出现情况2
如果出现提示要拆包或请求超时,则减小网络包的大小
根据上一步找到能成功ping到对端的最大的网络包的大小,然后在该值基础上加28(20字节的ip头部、8字节的icmp封装),就是本地网卡需要配置的MTU值
查看本地网卡MTU情况(Windows):
netsh interface ipv4 show subinterfaces
然后配置VPN对应网络适配器的MTU值(Windows):
netsh interface ipv4 set subinterface [适配器接口名] mtu=[要设置的MTU值] store=persistent
# 如 netsh interface ipv4 set subinterface "本地连接" mtu=1456 store=persistent