为什么网站的一部分可以在我的局域网之外运行,而不能在局域网之内运行?

为什么网站的一部分可以在我的局域网之外运行,而不能在局域网之内运行?

因此,我们在工作中有一个网站,但工作局域网内的任何人都无法使用。我们的客户可以使用它。如果我的手机使用 LTE,我就可以使用它。我无法通过 WiFi、工作中的以太网连接或 DNS 服务器使用它。如果有帮助的话,不起作用的部分是 JavaScript。

作为编辑:这是我们自己的网站。

答案1

如果没有更多信息,很难得出任何关于为什么会发生这种情况的准确结论。我经常在中小型企业网络上看到的一个问题具有非常相似的症状;您可以从外部位置访问内部托管的服务,但无法在内部访问它们。这与您的情况不同,因为您明确表示服务是外部托管的,但可能有一个您没有考虑到的内部托管组件。

总结一下发生的事情:客户端向域名发出请求,该域名解析为您的网络外部 IP 地址。然后,客户端的请求到达您的外部地址,您的路由器使用您的 NAT/PAT 规则转换此请求并确定“您想与此服务器对话”,然后转发该请求。服务器响应,然后您的路由器将响应转发回客户端。

当您从内部客户端访问同一个名称时,它仍然会解析为您网络的外部 IP 地址,但是当您发出请求时,您的路由器会说“哇,您已经在网络内部了,我不需要做任何工作”,因为路由器促进了网络“之间”的通信。

大多数廉价路由器都实施了一项名为“反向 NAT”的功能来处理此问题,而这通常不是您可以控制的,因此它很少影响小型企业和爱好者。大型组织通常拥有适当的 DNS 和路由基础设施来处理这些情况,并且其架构通常经过深思熟虑。不幸的是,大多数中型企业陷入困境,他们需要高端硬件的灵活性,但没有充分组织或配置其安装。

首先,您需要确定是否发生了这种情况。

  1. 将您的手机连接到电脑,然后使用您最喜欢的浏览器访问该网站。
  2. 观察一切是否正常。打开浏览器开发者工具并找到网络请求/响应部分。在 Internet Explorer 中,按 F12 并打开“网络”选项卡即可到达那里。
  3. 按下播放/录制按钮开始记录流量,然后重新加载页面。
  4. 调用一些在您的网络内通常不起作用的基于 javascript 的东西。
  5. 停止捕获。

现在查看发出的网络请求列表,并记下这些请求中的所有域名。使用 nslookup 查询它们的 IP 地址。如果其中一个是您的专用网络的外部地址,则这可能是您的问题。如果是这种情况,只需修改您的内部 DNS 服务器,将此地址解析为路由器将此流量转发到的同一节点。

如果您坚持认为您的网站在外部主机上完全独立,请检查您的浏览器安全设置是否只影响您组织内的 javascript。最简单的方法是通过手机或其他设备将您内部使用的同一台 PC 直接连接到互联网,并验证一切是否按预期运行。

nslookup 命令行用法:nslookup hostname.com 8.8.8.8,其中 'hostname.com' 是您要解析的名称,'8.8.8.8' 是常用的公共 DNS 服务器。如果没有指定 DNS 服务器,它将使用您计算机的默认服务器。

相关内容