某些 ISP 无法访问 HTTP 服务

某些 ISP 无法访问 HTTP 服务

我遇到了一个非常奇怪的问题,我不知道该怎么办了。我遇到的所有问题都是几周前开始的。

我的网络的基本示意图如下: 基本网络设置

基本配置:

M1 服务:

M2 服务:

路由器端口转发(外部 [E:] 到内部)

  • E:81 至 M1:80
  • E:4321 至 M1:4321
  • E:8080 至路由器:8080
  • E:8081 至 M2:8080
  • E:22 至 M1:22 (ssh)
  • E:10000 至 M1:10000 (https webmin)
  • E:3389 至 M2:3389 (rdc)

问题:

在端口 4321 上,我的传入流量非常大。当我意识到 M1 上的 HTTPD 服务只能从某些 ISP 访问时,我的问题就开始了。

我的互联网服务提供商为我提供了一个基于 PPPOE 连接的静态 IP 地址 (188.26.X.XXX),称为 RDS。本讨论中的其他 ISP 包括 ROMTELECOM、ORANGE、UPC 和 INTERSAT。

经过几次测试,问题如下:

E:81、E:4321、E:8080、E:10000 无法从 RDS(我自己的网络)、ROMTELECOM、INTERSAT 加载。E:81、E:4321、E:8080、E:10000 可从 ROMTELECOM(不同地理区域)、UPC 和 ORANGE 等移动网络加载。

从任何地方都可以访问 E:8081、E:3389 和 E:22。

所有服务均在 LAN 中可用。

故障排除步骤

  1. 禁用路由器和 M1 上任何类型的防火墙。
    • 结果:同样的问题。
  2. 更改路由器 (wan) 和 M1 的 LAN ip 和 MAC 地址
    • 结果:同样的问题。
  3. 将运行 DD-WRT 的路由器 Asus WL-520GU 更改为运行默认固件和 Tomato 的 WRT54GL。
    • 结果:同样的问题。
  4. 从网络中移除 M1,并在 M2 上安装 2 个虚拟机 VM1 和 VM2。VM1 的配置与 M1 相同。VM2 用于测试目的,运行带有 RoR for Windows 和 USBWebserver 的 WINDOWS XP。
    • 结果:VM1 与 M1 的情况相同(ssh 正常。RoR 和 apache 不正常)。VM2 无法访问。
  5. 从网络中移除路由器并直接连接到 M2。将端口转发到 VM1 和 VM2。
    • 结果:同样的问题。
  6. 吓坏了。
    • 结果:同样的问题。
  7. 致电 ISP 支持并发送电子邮件。进行了电话交谈并解释了问题。他们没有发现任何问题。我的 ISP 没有改变流量。
    • 结果:同样的问题。
  8. 以随机顺序重复上述步骤...

我做的其他测试

使用 WFetch 后,我意识到我的服务器收到了来自受影响网络的请求,但响应在几个字节之后就变得不稳定了。使用我的 E:81_h5ai作为屏幕截图和其他文件共享用途的服务,我删除了所有文件并创建了一个只有 1 个字符的 index.html。再次从受影响的网络测试 E:81,服务可以访问,并且已收到 index.html 的内容。向文件中添加字符后,我发现已连续收到一个包含 ~1499 个字符的 index.html。再添加一个字符,效果将变得如所述无响应。浏览器没有超时,只是在等待响应。不幸的是,这个缓冲区在 WEBrick 上不一样。需要我的服务器提供更大的响应(~3k 个字符)才能重现该问题。E:8081 始终可以从所有网络访问。

此外,我意识到如果我请求不存在的页面 :81/xyz 或 :4321/xyz,我会收到 404 错误。无论是来自 HTTP 服务器,apache2 还是 WEBrick。这与允许作为响应的最大数据量有关。

重现问题

我当前的配置包含 VM1。M1 和 VM2 已被移除。尝试通过浏览器访问 188.26.X.XXX:4321 和 188.26.X.XXX:81,如果不行,则通过取回

谢谢,我希望我已经清楚地表达了我的问题。

答案1

我发现连续收到一个~1499个字符的index.html,再加一个字符,效果就会像描述的一样无响应。

这表明最大传输单元问题(维基百科链接)您的路由器发送了另一个路由器无法处理的大数据包。

通俗地说,网络/互联网上的所有通信都被分解成小数据包,但数据包的大小并不固定。MTU(最大传输单元)是设备(例如路由器)应该发送的最大大小。如果您尝试发送较大的数据包,您的设备应该将数据包拆分成两个数据包并分别发送。

但是,如果您的路由器向无法处理的另一个路由器发送大型数据包,则可能会出现问题。在这种情况下,您的路由器会认为数据包丢失并再次发送,由于这也会失败,它会一次又一次地发送,直到它放弃。

减少路由器上的 MTU 意味着您的路由器将发送另一个路由器可以接受的较小的数据包,并且一切都开始正常工作。

那么为什么不每个人都使用每个人都能应付的较小的 MTU 设置呢?每个发送的数据包都有开销,例如有关数据包来自谁以及要发送给谁的信息,并且还必须收到指示数据包已正确接收的回复。因此,数据包越小,您需要发送的数据包就越多,开销就越大,这会降低您的连接速度。(例如,出于性能原因,我理解 XBOX live 需要至少 1364 的 MTU)

因此,通常的建议是使用默认设置,除非您遇到问题,在这种情况下,您不断降低 MTU 设置(以 10 为步长),直到找到可靠的值。

默认设置取决于您使用的网络连接类型。例如,内部 Windows 网络上的默认设置是 1500,而使用 PPPoE 的互联网连接的默认设置是 1492。

答案2

根据SANS,端口 4321 已被 BoBo 木马使用。由于您没有指定 UDP 或 TCP,我想知道该端口是否可能被某些 ISP 关闭?!?!您可能还想看看本网站有关端口 4321 的更多信息。另外,我的理解是,许多 ISP 不赞成人们运行他们的网络服务器,除非这是与 ISP 签订了业务合同的企业。

相关内容