我在IIS上的家中托管了一个ASP.NET网站。在我的家庭网络之外,我可以看到网站,但在网络内部,它给我一个404错误。我可以将该网站浏览为localhost。这似乎是一个DNS问题,只是不知道如何解决它。

有帮助吗?

解决方案

这几乎肯定是一个NAT问题。我假设您的Web服务器位于NAT路由器后面,并且您已将一些端口(可能是80)从路由器的外部接口转发到服务器计算机上的端口80。我还假设您尝试使用解析为外部IP的名称(可能是动态DNS名称)访问您的网站,或者您尝试使用该外部IP直接访问它。这可能不会开箱即用,因为大多数NAT路由器只会为路由器外部接口上的数据包提供端口映射。

如果上述情况属实,则有四种可能的解决方案:

  1. 查看路由器的配置并尝试查找类似于“NAT loopback”,“Ext-int loopback”的内容。等等。这将指示路由器处理来自内部接口并发往外部IP的数据包,就像处理来自外部接口的数据包一样,有效地正确地回送流量。这将触发端口转发,您的网站将工作。并非所有路由器都有此选项,但如果您使用此选项,则它将是最强大的解决方案。如果你没有,你也可以尝试将其固件更改为支持路由器的免费固件之一(Tomato,OpenWRT,DD-WRT等)我用过番茄成功应用于此类场景。

  2. 当您在路由器后面时使用内部IP,在外面时使用外部IP。

  3. 将您正在使用的DNS名称添加到您自己的主机文件中,使其与内部IP相对应。当从您自己的主机访问名称时,这将自动实现(3)。您必须为路由器后面的每个主机重复此操作。

  4. 在路由器后面运行您自己的DNS服务器,使其对您的DNS记录拥有权限并将其解析为内部IP,同时将其他DNS查询转发到您的实际名称服务器。

其他提示

您可能指向您的域的外部可见IP地址实际上是路由器或电缆调制解调器的IP地址。外部连接将通过IIS路由到机器,但是当您从网络内部连接时,您将获得路由器自己的Web服务器及其管理界面。这不太可能有一个与您请求的URL匹配的页面,因此您将获得404。

您应该能够通过在家庭计算机的hosts文件中添加一个条目来修复它,以便将您的域映射到启用了IIS的计算机的内部IP,从而覆盖DNS条目中的外部IP。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top