MTU、分片以及为什么你的 WireGuard 速度慢
如果您的 WireGuard 隧道连接但速度缓慢,在大文件传输时停滞,或在某些网站上挂起,通常的罪魁祸首是 MTU。此指南解释了 MTU 和分片是什么,为什么隧道会破坏数据包大小,以及需要更改的确切设置。
MTU 是什么以及隧道为何会破坏它
MTU(最大传输单元)是网络链路一次可以传输的最大数据包大小(以字节为单位)。以太网的标准MTU是1500。当数据包对于链路来说过大时,必须将其分片成更小的部分或丢弃。
一个WireGuard隧道将每个数据包封装在一个加密的UDP数据包中,而这个封装会增加开销——大约对于IPv4是60字节,对于IPv6是80字节。因此,来自您应用的完整1500字节数据包在WireGuard封装后会变得大于1500,而底层链路无法完整传输。这就是为什么WireGuard将其接口MTU默认设置为1420:它为加密开销留出了余地,以便封装后的数据包仍然适合1500字节的路径。
错误的 MTU 如何让您变慢
通常,当一个数据包太大而无法在不分片的情况下转发时,路由器会发送一个ICMP "需要分片"消息,发送方会降低其数据包大小——这就是路径 MTU 发现 (PMTUD)。问题在于,许多网络和防火墙会静默丢弃这些 ICMP 消息。当这种情况发生时,你会遇到一个PMTU 黑洞:小数据包(如页面开始部分)可以顺利通过,但大数据包会被静默丢弃而没有错误提示。症状显而易见——连接开始,然后挂起;SSH 登录但在输出时冻结;某些网站加载而其他网站停滞;大文件下载停留在 0%。
如果你的路径的 MTU 低于预期——在 DSL/PPPoE(增加 8 字节)、某些移动网络和双重封装链接上很常见——即使 WireGuard 的 1420 也可能太高,你会遇到黑洞。解决方法是降低隧道的 MTU,以便封装的数据包适合实际路径。
查找并设置正确的MTU
探测通过你的路径而不发生分片的最大数据包,然后将 WireGuard 接口 MTU 设置为低于该值。值为示例;测试你的。
# 1) Probe path MTU with don't-fragment pings (Linux/macOS). # Lower the size until it succeeds; that size + 28 = path MTU. ping -M do -s 1472 8.8.8.8 # 1472 + 28 (ICMP/IP headers) = 1500 ping -M do -s 1392 8.8.8.8 # if 1472 fails, try smaller (=> 1420) ping -M do -s 1252 8.8.8.8 # a safe fallback (=> 1280) # 2) Set the tunnel MTU in your WireGuard config, under [Interface]: # [Interface] # MTU = 1280 # widely-compatible fallback; try 1412/1420 first # 3) Apply and test a large transfer: wg-quick down wg0 && wg-quick up wg0 curl -o /dev/null https://speed.example/largefile # Rule of thumb: if small requests work but big ones hang, LOWER the MTU. # 1420 -> 1412 -> 1280 are common steps. 1280 is the IPv6 minimum and # almost always passes, at a small efficiency cost.
问题,已解答
我应该为 WireGuard 使用什么 MTU?
从 WireGuard 的默认值 1420 开始。如果大文件传输挂起而小请求正常工作,请降低它 — 常见步骤是 1412,然后是 1280。1280 是 IPv6 最小 MTU,几乎总是有效,但效率略有损失。使用不分片的 ping 测试你的路径,以找到通过的最高值。
为什么 WireGuard 连接后在大文件传输时会停滞?
几乎总是PMTU黑洞。你的数据包对于路径来说太大,而会发出信号的ICMP消息被丢弃,因此大数据包会静默消失,而小数据包则成功。降低隧道MTU可以使数据包适应并解决停滞问题。
为什么 WireGuard 的默认 MTU 是 1420 而不是 1500?
因为 WireGuard 将每个数据包封装在加密的 UDP 中,增加了大约 60 字节 (IPv4) 的开销。将接口 MTU 设置为 1420 为该开销留出了空间,因此封装的数据包仍然可以在标准的 1500 字节路径中适应而不发生分片。
人们通过搜索找到此页面
- MTU、分片以及为什么你的 WireGuard 速度慢
- 什么是 MTU、分片以及为什么你的 WireGuard 速度慢
- MTU、分片以及为什么你的 WireGuard 速度慢 比较
- MTU、分片以及为什么你的 WireGuard 速度慢是安全的吗
- MTU、分片以及为什么你的 WireGuard 速度慢 适合初学者
- 用于抓取的代理 解释
- 免费代理与付费代理:真实风险
- 如何配置wireguard
- IP地址 适合初学者
- 用于抓取的代理
- 如何隐藏您的 IP 地址:6 种方法排名
- 如何在抓取时修复429请求过多
- http 代理 用于商业
- 免费代理列表
- 代理认证:用户/密码与IP白名单
- 下载 免费代理列表
- IP地址
此页面回答的真实搜索短语 — 链接的短语打开详细覆盖它们的页面。