Vista 和 Ubuntu 之间奇怪的网络交互

Vista 和 Ubuntu 之间奇怪的网络交互

我有一个网络,其中我的 WAN(CableModem)进入一个(可疑配置的)Ubuntu 盒,该盒充当整个公司的路由器。

我们最近更换了 ISP,结果出现了非常奇怪的行为。在 Vista/Server 2008 机器上,有些网站无法正常工作。这种情况时有发生,但有一个网站 www.dilbert.com 始终无法正常工作。

我们已经对此进行了数周的实验,到目前为止我们发现了以下结果...

  • Linux 服务器本身可以加载 Dilbert 主页
  • Windows XP/2003 机器运行完美
  • Windows Vista/2008 机器有问题
  • 有时,在我的计算机(2008)上,在 FireFox 中,页面会加载。例如,在 Chrome 中,它从不加载。现在,一旦在 Firefox 中加载,如果我按 F5,它会立即死机,只会加载一次。错误是“连接已重置”
  • 重启我的机器、路由器、电缆调制解调器等,都无法让它再次加载,我仍然收到“连接重置”的提示,它也无法在其他机器上工作。不过,一段时间后(几天),它会再次加载,一次
  • 此外,我有时可以打开一个 telnet 连接(使用 Windows telnet 客户端)到 www.dilbert.com:80 并执行“get /”,在这种情况下,我会得到一堆 HTML,并且连接会关闭,这是意料之中的事。现在,如果我再次打开相同的连接,它会连接,但只要我按“g”,它就会断开连接。这是我能找到的最低级别的信息。
  • 使用“Fiddler”检查网络流量,在某些浏览器上,请求显示“响应状态 0”,响应为空,没有错误详细信息。在其他浏览器上,它甚至不会出现。
  • 最后,如果我将电缆调制解调器直接连接到 2008 年的 PC,中间不经过路由器,一切都会正常工作,所以我 99.99% 确定问题出在我的网络内部,而不是我的 ISP。

现在,我最好的猜测是,这是 Vista 网络层(据我所知,它是从 XP 重写的,它不一样)和 Ubuntu 之间的某种奇怪的交互。
这就是我得到的全部信息。除此之外,我完全地我惊呆了,开始相信我的建筑受到了诅咒。

你们能想到什么可行的办法来判断到底发生了什么事情/我可以做什么来解决/诊断这个问题吗?

注意:我对 Linux 一无所知,但如果你能想到一些可以给我提供有用信息的东西,我可以运行命令。

谢谢!
丹尼尔

答案1

我觉得这是 MTU 问题。不过我不知道 Vista 的 MTU 算法是什么。

作为一个简单的测试,设置 Vista 机器的 MTU人为地降低 MTU,例如 500,看看是否能解决问题。如果能,我们可以说 MTU 是原因,然后回头看看如何解决这个问题。


什么是 MTU?

MTU == 最大传输单元。实际上,它是您的计算机将发送的最大以太网数据包。IP 规范规定,如果路由器收到的数据包太大而无法从其(其他)接口发送出去,它可以对数据包进行分段,也可以发回一条 ICMP 消息,表示“数据包太大”。但是,分段对性能不利,因此许多路由器从不同意分段。此外,现代操作系统使用一种技巧来确定特定路径的最佳 MTU,方法是发送大小逐渐减小的数据包,直到它们不再听到关于数据包太大的响应。这就是路径 MTU 发现 (PMTUD)。

您所遇到的情况是,某个路由器拒绝对数据包进行分段,但您的 Vista 计算机从未收到其拒绝通知。当您将 MTU 设置得非常小时,您就是在告诉操作系统始终传输小于任何现代电路可能能够接受的数据包,因此您的数据包将永远不会遇到需要进行分段的情况。


更新

现在我们知道这是一个 MTU 问题,并且只涉及您的 Ubuntu 路由器,这意味着您的 Ubuntu 路由器正在以某种方式破坏数据包碎片。

它是否正在运行防火墙?它是否正在阻止 ICMP?如果是,请尝试禁用它。(显然,首先要将 MTU 恢复到 1500 的标准;否则您将调试一个不再存在的问题。)

答案2

如果可以的话,我会换用真正设计用于路由器的东西。

我个人建议普富思。中的一个pfSense 的常见部署是作为边界防火墙

相关内容