最奇怪的互联网问题:有些网站可以运行,有些则不能

您的互联网正在运行。你可以用谷歌搜索东西。 YouTube 加载。 Reddit 运行良好。但您的银行网站无法加载。您的工作 VPN 已连接,但随后没有任何效果。 Gmail 可以,但您无法访问某些网站。

速度测试显示速度良好。平有效。你们绝对是有联系的。但特定网站只是超时或永远挂起。

这种奇怪的症状模式让人尖叫 MTU问题 (最大传输单元)。您的网络正在发送太大的数据包,变得碎片或丢失,并破坏特定网站,而其他网站却正常工作。

MTU到底是什么(简单版)

MTU 是网络允许的最大数据包大小。可以将其视为运输的最大箱子尺寸:

  • 标准MTU: 1500 字节(在任何地方都适用)
  • 您的网络 MTU: 也许设置为 1500
  • 但在路径中的某个地方: 一个设备只能处理 1400 字节
  • 结果: 大数据包被丢弃,小数据包正常工作

为什么有些网站可以工作,有些则不行:

  • Google 主页:小数据包,负载良好
  • 安全性高的银行网站:大数据包容易被丢弃
  • 普通电子邮件:小包,有效
  • 带附件的电子邮件:大数据包,失败

如何知道 MTU 是否是您的问题

经典MTU问题症状:

  1. VPN 连接但没有任何效果

- VPN 连接成功 - 但网页浏览、应用程序全部超时 - 这是 #1 MTU 症状

  1. 有些网站可以加载,有些则不能

- 简单站点:工作正常 - 具有 HTTPS/安全性的复杂站点:失败 - 模式一致(相同站点总是失败)

  1. 可以 ping 通但无法浏览某些网站

- 小 ping 数据包:工作 - 大型 Web 数据包:失败

  1. 适用于移动数据,但不适用于 WiFi(反之亦然)

- 不同的网络有不同的 MTU 限制 - 问题仅出现在一个网络上

  1. SSH/远程桌面连接但在使用过程中挂起

- 初始连接:小数据包,有效 - 数据传输:大数据包,失败

快速 MTU 测试 (Windows)

测试您的 MTU 是否导致问题:

命令
ping google.com -f -l 1472

这是做什么的: 发送无法分片的1472字节数据包

好结果:

命令
Reply from 142.250.80.46: bytes=1472 time=15ms

MTU 就可以了。

不好的结果:

命令
Packet needs to be fragmented but DF set

MTU 问题已确认。

如果失败,请测试较小的尺寸:

命令
ping google.com -f -l 1464
ping google.com -f -l 1400
ping google.com -f -l 1352

找到最合适的尺寸。这是您的实际 MTU 限制(数字加 28)。

快速 MTU 测试 (Mac/Linux)

命令
ping -D -s 1472 google.com

Mac 替代方案:

命令
ping -D -s 1464 google.com

相同的逻辑:找到不会被丢弃的最大数据包大小。

如何修复 MTU 问题

修复 1:降低网络适配器上的 MTU (Windows)

步骤一: 以管理员身份打开命令提示符

步骤 2: 找到您的网络接口名称:

命令
netsh interface ipv4 show subinterfaces

步骤 3: 将 MTU 设置为 1400(安全值):

命令
netsh interface ipv4 set subinterface "Wi-Fi" mtu=1400 store=persistent

(将“Wi-Fi”替换为您的接口名称)

步骤 4: 测试网站现在是否正常工作

如果1400有效,你可以尝试增加:

  • 尝试1450,测试
  • 尝试1480,测试
  • 找到一切正常的最佳位置

修复 2:降低 Mac 上的 MTU

步骤一: 找到您的网络接口:

命令
networksetup -listallhardwareports

步骤 2: 设置MTU:

命令
sudo networksetup -setMTU Wi-Fi 1400

步骤 3: 验证:

命令
networksetup -getMTU Wi-Fi

修复 3:降低 Linux 上的 MTU

临时(直到重新启动):

命令
sudo ip link set dev eth0 mtu 1400

永久(添加到 /etc/network/interfaces):

命令
iface eth0 inet dhcp
    mtu 1400

修复 4:路由器 MTU 设置(影响所有设备)

更好的解决方案: 在路由器级别修复它,以便所有设备受益。

  1. 登录路由器(192.168.1.1 或类似)
  2. 找到“MTU”设置(通常在WAN或高级设置中)
  3. 从 1500 更改为 1400 或 1450
  4. 保存并重启路由器

常见地点:

  • TP-Link: 网络 > WAN > MTU 大小
  • 网件: 高级 > 设置 > WAN 设置 > MTU 大小
  • 华硕: WAN > 互联网连接 > MTU
  • 链接系统: 连接 > 互联网设置 > MTU

VPN 特定的 MTU 修复

如果 VPN 连接但不起作用:

大多数 VPN 软件都有 MTU 设置。

OpenVPN: 添加到配置文件:

命令
mssfix 1400
tun-mtu 1400

WireGuard: 在接口配置中设置 MTU:

命令
MTU = 1400

商业 VPN 应用程序:

  • 在高级设置中查找“MTU”
  • 尝试值:1400、1420、1450
  • 测试直至有效

为什么会出现 MTU 问题

常见原因:

  1. PPPoE 连接 (DSL 互联网)

- PPPoE 增加了 8 字节开销 - 标准 1500 MTU 变为 1492 有效 - 某些设备不能很好地处理这个问题

  1. VPN/隧道

- 加密会增加开销 - 加密后 1500 MTU 数据包变得太大 - VPN 流量需要较低的 MTU

  1. ISP网络设备

- 某些 ISP 在内部使用 MTU < 1500 - 不要向客户宣传这一点 - 导致神秘故障

  1. 多层隧道

- VPN through VPN - VPN over PPPoE - 每层都会增加开销

如何找到最佳 MTU

公式: 最佳 MTU =(最大工作 ping 数据包大小)+ 28

示例:

  • ping -f -l 1464 有效
  • ping -f -l 1472 失败
  • 最佳 MTU = 1464 + 28 = 1492

常用安全MTU值:

  • 1500: 标准,适用于大多数地方
  • 1492: PPPoE 连接
  • 1450: 对于大多数 VPN 来说都是安全的
  • 1400: 非常保守,几乎在任何地方都适用
  • 1280: IPv6 的最小值,总是有效但效率低下

底线

如果某些网站可以工作,但其他网站却不能,或者 VPN 连接但流量不流动,则可能存在 MTU 问题。

快速诊断:

命令
ping google.com -f -l 1472

如果失败,则 MTU 就是您的问题。

快速修复: 将网络适配器或路由器上的 MTU 降低至 1400。测试问题是否消失。

最佳修复: 测试不同的 MTU 值(1400、1450、1480)以找到可靠工作的最高值。用那个。

设置位置:

  • 路由器:影响所有设备(最佳选择)
  • 网络适配器:仅影响一台设备
  • VPN 软件:仅影响 VPN 流量

大多数人从未遇到过 MTU 问题。但当你这样做时,症状会非常奇怪,你会浪费几个小时先排除其他所有问题。现在您知道要检查什么了。