ikuuu
ikuuu Logo
连接排障

WireGuardMTU配置客户端与服务端协同配合实用技

很多用户部署WireGuard隧道后经常遇到一类诡异故障:隧道连接状态显示正常,小体积的数据包比如普通ping请求完全通,但是打开带大量图片的网页、传输大体积附件、跑大流量业务时就会莫名卡顿甚至中断,反复排查加密配置、端口规则、防火墙都找不到问题,这类故障绝大多数都和WireGuard MTU客户端与服务端如何配合不到位有关,我们可以从故障现象出发一步步完成协同配置,不用盲目修改参数。

先确认MTU不匹配的典型故障现象

遇到疑似MTU相关故障时,首先要排除其他常见VPN问题的干扰,比如不要把防火墙拦截、密钥不匹配、路由规则错误导致的断连和MTU问题混淆。典型的MTU不匹配场景有非常明确的特征:小尺寸的ICMP请求、小体积的聊天报文可以正常在隧道内传输,只要报文长度超过某个阈值就会直接被丢弃,没有任何明确的报错提示。

运维调试WireGuardMTU协同配置 - ikuu

运维人员正在排查WireGuard隧道MTU配置不匹配引发的大流量传输异常故障

排查的第一步不要直接修改WireGuard配置,先断开VPN连接,在本地用带不分片标记的ping命令,测试客户端到WireGuard服务端公网IP的最大可通行包长,确认公网本身的MTU没有异常,排除运营商中间链路的常规故障之后,ikuuu vpn再进入隧道内的MTU协同排查流程。

WireGuard MTU的底层逻辑和协同配置前提

WireGuard的封装机制会在原始IP报文外额外增加UDP头、外层IP头和加密封装头,官方默认配置的1420MTU就是基于标准以太网1500的公网MTU扣除所有封装开销得到的数值,但是如果链路中间存在PPPoE拨号、VLAN标签、其他隧道叠加的场景,这个默认值就会出现溢出,导致报文必须分片才能传输。

WireGuard MTU客户端与服务端如何配合的核心前提,就是两端的隧道接口MTU不能出现过大的差值,很多用户图省事只修改服务端或者只修改客户端的MTU配置,另一端保持默认值,就会导致大报文在隧道转发的中途因为尺寸不匹配被丢弃,同时ICMP分片不可达的通知报文也会被隧道封装规则拦截,最终出现无理由卡顿的黑盒现象。

分步完成客户端与服务端的MTU协同校验

第一步先在服务端侧执行测试,在断开所有隧道连接的状态下,测试服务端公网出口到公共节点的最大无分片包长,得到公网侧的实际可用MTU之后,扣除WireGuard的所有封装开销,得到服务端WireGuard接口的基准MTU数值。

第二步把这个基准MTU数值写入服务端对应WireGuard实例的配置文件,找到配置段里的MTU参数行填入数值,ikuuu重载WireGuard配置或者重启服务之后,用系统的链路查询命令确认对应隧道接口的MTU已经更新,避免出现修改了配置文件但实际运行参数没变化的问题。

第三步在客户端侧不要直接照搬服务端的MTU数值,要结合客户端本地的网络环境做调整,比如客户端处于企业内网、家用PPPoE拨号网络、移动蜂窝网络时,本地网络本身的MTU就不是标准1500,这时候要在服务端给出的基准MTU基础上,扣除客户端本地网络的额外封装开销,得到客户端WireGuard接口的最终MTU值。

第四步两端配置全部生效之后,在WireGuard隧道内部,用两端的虚拟内网IP做带不分片标记的大包ping测试,ikuuu vpn测试报文的长度设置为两端MTU数值减去28(基础IP头和ICMP头的总长度),如果测试报文可以正常返回,就说明两端的MTU协同配置已经初步生效。

常见配置误区和后续维护注意事项

很多新手用户为了省事直接把两端MTU都改成远低于基准值的数值,以为这样就不会出现分片问题,实际上过小的MTU会导致报文封装占比大幅提升,隧道传输的有效载荷占比下降,完全没必要做这种过度保守的配置,只要匹配两端的实际网络环境就可以。

还有不少用户配置完MTU之后忘记调整TCP MSS钳制参数,MSS的标准数值就是对应MTU减去40,要把两端防火墙里的MSS钳制规则和WireGuard的MTU数值对应上,不然就算MTU配置完全正确,TCP协议的大报文还是会出现莫名卡住的问题。

如果后续客户端切换了网络环境,比如从家用WiFi切换到移动流量,或者从普通公网切换到其他内网环境,客户端本地的网络封装规则发生变化,只需要重新校验客户端侧的可用MTU调整对应参数即可,不需要修改服务端的配置,就能快速恢复隧道的正常传输。

连接排障编辑组 | ikuu
连接排障编辑组
内容编辑

按设备、网络、客户端和服务端逐层检查,让故障定位更有条理。

查看更多文章
配置入门

找到适合当前设备的指南

遇到出口网关与子网网关区别相关问题,可从“先明确业务目标,再核对对应网关配置”开始阅读。访问子网不必然意味着互联网流量也经过该网关,需要结合具体环境判断。