我有一个托管在 IIS 上的 ASP.NET 网站。在我的家庭网络之外,我可以看到该网站,但在网络内部,它给了我一个 404 错误。我可以以本地主机的身份浏览该站点。这似乎是一个 DNS 问题,只是不知道如何解决它。
2 回答
这几乎可以肯定是 NAT 问题。我假设您的 Web 服务器位于 NAT 路由器后面,并且您已将某些端口(可能是 80)从路由器的外部接口转发到服务器机器上的端口 80。我还假设您尝试使用解析为您的外部 IP 的名称(可能是动态 DNS 名称)访问您的网站,或者您尝试使用该外部 IP 直接访问它。这可能不会开箱即用,因为大多数 NAT 路由器只会使端口映射可用于进入路由器外部接口的数据包。
如果上述情况成立,则有四种可能的解决方案:
查看路由器的配置并尝试找到类似于“NAT 环回”、“Ext-int 环回”等的内容。这将指示路由器处理来自内部接口并以外部 IP 为目的地的数据包,就像它处理来自外部接口的数据包一样,有效地循环回流量。这将触发端口转发,您的站点将正常工作。并非所有路由器都有此选项,但如果您有此选项,它将是最强大的解决方案。如果您没有,您也可以尝试将其固件更改为支持您的路由器(Tomato、OpenWRT、DD-WRT 等)的免费固件之一。我已经成功地将Tomato用于此类场景。
当您在路由器后面时使用内部 IP,而在外面时使用外部 IP。
将您使用的 DNS 名称添加到您自己的主机文件中,使其与内部 IP 相对应。当从您自己的主机访问名称时,这将自动实现 (3)。您必须对路由器后面的每个主机重复此操作。
在路由器后面运行您自己的 DNS 服务器,使其声明对您的 DNS 记录的权限并将其解析为内部 IP,同时将其他 DNS 查询转发到您的实际名称服务器。
您可能将域指向的外部可见 IP 地址实际上是您的路由器或电缆调制解调器的 IP 地址。外部连接将被路由到打开 IIS 的机器,但是当您从网络内部连接时,您将获得路由器自己的 Web 服务器及其管理界面。这不太可能有与您请求的 URL 匹配的页面,因此您将得到 404。
您应该能够通过在您的家庭计算机的主机文件中添加一个条目来修复它,以将您的域映射到打开 IIS 的计算机的内部 IP,覆盖 DNS 条目中的外部 IP。