MOXA IKS-G6824A-20GSFP交换机通过OpenVPN访问VRRP配置页面时Web UI元素缺失(疑似MTU/MSS问题)
问题描述
我最近碰到一个挺头疼的问题:
- 在本地子网内访问MOXA IKS-G6824A-20GSFP交换机的Web UI,打开VRRP配置页面时一切正常,所有表单字段、操作按钮都能完整加载显示。
(本地正常界面截图:完整的VRRP配置界面,包含所有设置项、状态区域和操作按钮)
- 但当我通过自己搭建的OpenVPN连接跨VPN访问同一个VRRP配置页面时,页面出现了奇怪的加载异常:不少元素直接缺失,布局也变得错乱。
(VPN访问异常界面截图:VRRP配置页面的部分表单字段、操作按钮消失,页面显示不完整)
我排查了半天,锁定到MTU/MSS(最大传输单元/最大段大小)的问题上:本地访问时,协商出来的MSS是1460,用Wireshark抓包验证,数据包总大小为1514(1460+20字节TCP头+20字节IPv4头+14字节以太网帧头),完全符合预期。
(本地正常抓包截图:显示数据包大小为1514,MSS值为1460)
而通过OpenVPN访问时,隧道本身会额外增加封装开销(比如OpenVPN的UDP封装大概要占50字节左右),如果还沿用默认的1500 MTU,就会导致数据包超过隧道的承载能力,进而触发分片或丢包,最终导致Web页面的部分资源加载失败,出现元素缺失的情况。
解决建议
针对这个问题,我尝试了几个有效的调整方法,分享给大家:
调整OpenVPN客户端MTU值
在OpenVPN客户端配置文件里添加一行:mtu 1400,如果是GUI客户端,直接找到MTU设置项填入1400即可。这个值预留了足够的隧道封装空间,避免数据包超限。启用MSS钳制(MSS Fix)
可以在OpenVPN服务器端配置中添加push "mssfix 1360",服务器会自动把这个MSS值推送给所有连接的客户端;也可以直接在客户端配置里添加mssfix 1360,强制限制TCP段的大小,确保数据包经过隧道时不会被分片。检查交换机侧MTU设置
本地登录交换机Web UI,检查VRRP相关接口的MTU是否为默认的1500,如果之前修改过建议改回默认值;同时确认交换机是否开启了TCP MSS自动调整功能,若有则确保该功能处于启用状态。验证调整效果
修改配置后重新连接OpenVPN,再次访问VRRP配置页面查看元素是否完整加载;也可以用Wireshark在客户端抓包,确认此时的MSS值是否调整到了合适的范围(如1360左右),且没有出现分片或丢包情况。
备注:内容来源于stack exchange,提问作者Lance Tollenaar

