记录一个,SSL不能分包导致mtu超过限制的丢包问题
环境
设备1(ppp server):
eth0 -> 外网链路(可以正常访问github,google)
ppp0 -> 隧道 192.168.52.1
设备2(客户端锐捷路由器):
ppp0 -> 隧道与设备1连接 192.168.52.10
现象
访问Google 正常
访问Github 失败
复现
- curl -v http://github.com (80端口)正常响应
- curl -v https://github.com (443端口)TLS server hello 失败
分析:
- 在 设备2 ppp0 抓包可得到 SSL 没有server hello包
- 在 设备1 eth0 抓包可得到 server hello包正常获取且大小是 2712
- 在 设备1 ppp0 抓包发现无server hello包
- 同理分析谷歌可发现设备1 的 eth0 和 ppp0 均可得到 server hello包
- 分析 server hello 关键帧发现 谷歌运行分片,Github不允许分片,从 eth0 转发到 ppp0 mtu发生变化导致丢包
方案
修改ppp0的mtu到5000(这个数值在我的网络环境下可行,你需要通过ping 设备1ppp0的ip -l 1200命令测试,通过调整-l的大小测出一个最大值)