Vista和Ubuntu之间奇怪的networking交互

我有一个networking,我的广域网(一个CableModem)进入一个(可疑configuration)的Ubuntu盒子,作为整个公司的路由器。

我们最近转换了我们的ISP,我们得到一个非常奇怪的行为。 在Vista / Server 2008机器上,有些网站不工作。 这来了一下,但有一个,www.dilbert.com从来没有工作。

过去几个星期我们一直在做这个实验,这些是我们迄今为止发现的东西…

  • Linux服务器本身可以加载Dilbert主页
  • Windows XP / 2003的机器工作完美
  • Windows Vista / 2008机器有问题
  • 有时,在我的机器(2008),在FireFox,页面加载。 例如,它从不在Chrome中加载。 现在,一旦它加载到Firefox,如果我按F5,它立即死亡,它只加载一次。 错误是“连接被重置”
  • 重新启动我的机器,路由器,cablemodem等,将不会再次加载,我仍然“连接重置”,它也不能从其他机器工作。 然后一段时间(天),它会再次加载, 一次
  • 另外,我有时可以打开telnet连接(使用Windows telnet客户端)到www.dilbert.com:80并执行“get /”,在这种情况下,我得到一堆HTML,并且连接closures。 现在,如果我再次打开相同的连接,它会连接,但只要按下“g”,它就会断开连接。 这是我能find的最低级别的信息。
  • 使用“Fiddler”来检查networkingstream量,在一些浏览器中,请求显示“响应状态0”,一个空的响应,没有错误的细节。 与其他浏览器,甚至不出现。
  • 最后,如果我将cablemodem直接连接到2008个人电脑,没有中间的路由器,一切都很好,所以我99.99%确定问题是在我的networking,而不是我的ISP。

现在,我最好的猜测是,这是Vista的networking层(据我所知,是从XP改写的,不一样)和Ubuntu的一些奇怪的互动。
这就是我得到的。 除此之外,我完全傻眼了,开始相信我的build筑有一个诅咒。

你们能想出任何可能的想法吗?我可以做些什么来解决/诊断?

注:我知道没有关于Linux,虽然我可以运行命令,如果你能想到的东西,会给我一些有用的信息。

谢谢!
丹尼尔

感觉像我的MTU问题。 不过,我不知道Vista的MTUalgorithm是什么。

作为一个简单的testing, 将你的Vista机器的MTU人为地设置为 500,看看是否能解决这个问题。 如果是这样,我们可以说MTU是原因,并回头看看如何解决这个问题。


什么是MTU?

MTU ==最大传输单位。 实际上,这是您计算机发送的最大的以太网数据包。 IP规范说,如果一个路由器收到的数据包太大而无法发送其他(其他)接口,它可以将数据包分段或发回一个ICMP消息“This is too big”。 尽pipe如此,片段化对于性能还是不利的,因此许多路由器从来不会同意片段化。 此外,现代操作系统使用一个技巧来确定特定path的最佳MTU,方法是发送大小递减的数据包,直到它们不再听到有关数据包太大的响应。 这是pathMTU发现,或PMTUD。

发生在你身上的是某个路由器拒绝分割一个包,但是你的Vista机器从来不会听到拒绝通知。 当你设置你的MTU真的很小的时候,你告诉操作系统总是发送比任何现代电路都小的数据包,因此你的数据包永远不会被分割。


更新

现在我们知道这是一个MTU问题,只涉及到你的Ubuntu路由器,这意味着你的Ubuntu路由器正在破坏分组碎片。

它运行防火墙吗? 它阻止ICMP? 如果是这样,请尝试禁用该function。 (显然,回到1500的标准MTU,否则你将会debugging一个不存在的问题。)

如果可以的话,我会切换到实际devise用作路由器的东西。

我个人推荐pfSense。pfSense的常见部署之一是作为外围防火墙 。