MTU设置不当导致ssh运行命令卡死

MTU:最大网络传输单元,计算机网络课会介绍。

场景:

本地通过VPN连接某个机房内网的linux服务器,连接上之后,运行top命令、vi命令、yum update等需要刷新大量内容时导致ssh卡死,但重连后发现命令最后会自己执行完成。

在网上找了一下解决办法,发现是MTU的问题,但怎么确定本地应该配置什么MTU值呢?实测发现可参考:http://t.zoukankan.com/keystone-p-11410659.html

具体:

  1. 在本地运行如下所示ping命令,含义:发送大小包大小是1460(+28)字节,禁止路由器拆分数据包。
    linux下探测MTU值:
    ping -s 1460 -M do baidu.com
    
    windows下探测MTU值:
    ping -f -l 1460 baidu.com
  2. 根据ping的结果分开处理
    1. 如果正常回复,继续尝试增加网络包的值,直至不会出现情况2
    2. 如果出现提示要拆包或请求超时,则减小网络包的大小

  3. 根据上一步找到能成功ping到对端的最大的网络包的大小,然后在该值基础上加28(20字节的ip头部、8字节的icmp封装),就是本地网卡需要配置的MTU值
  4. 查看本地网卡MTU情况(Windows):
    netsh interface ipv4 show subinterfaces
  5. 然后配置VPN对应网络适配器的MTU值(Windows):
    netsh interface ipv4 set subinterface [适配器接口名] mtu=[要设置的MTU值] store=persistent
    # 如 netsh interface ipv4 set subinterface "本地连接" mtu=1456 store=persistent

 

posted @ 2022-09-21 16:14  我是包子  阅读(764)  评论(0编辑  收藏  举报