很多企业运维人员和普通远程办公用户排查VPN连接卡顿、间歇性断连、大文件传输中途卡住的故障时,第一反应往往先核对账号权限、防火墙放行规则、加密套件兼容性,经常漏掉MTU配置的影响,甚至在调整MTU的过程中踩了不少反而加重故障的误区,本文结合日常办公SSL VPN、跨站点IPsec VPN的常见排查场景,梳理MTU相关的典型错误操作,帮大家避开无效排查的弯路。
误区1:直接把所有设备MTU统一改成标准以太网的1500
不少人遇到VPN大流量传输异常的问题时,第一直觉是当前MTU设置得太小,直接把出口路由器、VPN网关、终端物理网卡的MTU全部改成标准值1500,完全忽略VPN封装本身会新增报文头的额外开销。
比如常用的IPsec ESP封装,本身就会给原始IP报文叠加专属的加密头部字段,部分家用或企业出口还叠加了运营商PPPoE拨号的额外头部,整条VPN路径实际能承载的原始报文大小本来就比1500小,强行设置成1500之后,超过链路实际承载能力的报文会被中间设备直接静默丢弃,反而出现小网页能正常打开、大附件上传直接卡住的诡异问题,后续排查还会错误往VPN加密规则冲突的方向走,浪费大量排查时间。
误区2:只修改终端物理网卡MTU,忽略VPN虚拟网卡的独立配置
很多用户在Windows或者macOS系统的网络设置里改完物理网卡的MTU值,就以为所有网络流量都会遵循这个配置,实际上VPN拨号成功之后,系统会自动生成一块独立的虚拟VPN网卡,这块虚拟网卡的MTU默认值大多由VPN服务端直接下发,不会自动同步物理网卡的配置参数。
比如使用OpenVPN客户端连接企业内网的场景下,不少用户改完物理网卡MTU之后测试大文件传输还是持续丢包,直到查看系统路由表才发现所有跨VPN的内网流量全部走虚拟网卡转发,而虚拟网卡的MTU还是服务端默认下发的偏低数值,之前针对物理网卡的调整完全没有作用,等于做了全无效的配置操作。
误区3:用普通公网站点ping测试代替VPN专属路径的MTU探测
这是VPN与MTU设置常见排查误区里出现频率最高的错误操作,很多运维排查MTU问题的时候,直接ping公网的普通公共站点,加不分片参数测试最大报文长度,测出公网链路MTU没有问题,就直接判定VPN路径不存在MTU不匹配的故障,完全忽略两条路径的转发逻辑完全不同。
正确的验证方式应该是先成功连接VPN,之后对内网的目标业务服务器IP发起带不分片标记的ping测试,逐步调整报文负载的大小,直到能稳定收到正常回包,再用这个数值加上ICMP头和标准IP头的长度,得到的才是VPN专属路径的实际可用MTU,普通公网站点的探测结果走的是未经过VPN封装的公网链路,完全不具备参考价值。
误区4:调整完MTU数值之后不验证PMTUd功能是否正常
很多运维调整完VPN网关和终端的MTU值之后,就直接结束排查流程,完全没有验证整条转发路径上的PMTU发现机制是否被防火墙拦截,一旦路径上某台中间设备拦截了ICMP的目的不可达、需要分片的报文,就算MTU数值设置得完全正确,超过链路MSS的大报文还是会被直接静默丢弃。
这种情况的典型表现就是VPN连接状态显示完全正常,网页上的小元素加载没有任何问题,但是打开带大量高清图片的内网OA页面、传输大体积的工业设计文件的时候,页面直接卡住超时,很多人遇到这种情况会反复调整MTU数值,甚至把MTU改到非常小的数值还是解决不了问题,本质上是没有先放行ICMP的对应报文,PMTUd机制失效的前提下,任何MTU调整都没法完全避免大报文丢包。
日常处理VPN连接异常故障的时候,不要上来就盲目修改MTU参数,先梳理清楚整条VPN路径上所有节点的封装开销,再针对性做VPN专属路径的探测验证,才能快速定位核心问题,避免做大量无效的反向操作。


