我的家庭网络上有一个 WGT634U 无线路由器,其网络服务器地址为 192.168.1.200。我已设置端口转发,以便http://xxx.xxx.xxx.xxx(我的公网 IP 地址)由位于 192.168.1.200 的内部 Web 服务器应答。
问题是,当我尝试从 192.168.xx 网络内部呼叫公共 IP 地址时,路由器 (192.168.1.1) 上的 Web 服务器正在应答该请求,以便我可以登录并管理它,而不是将我转发到 192.168.1.200。
如果我直接使用 Web 服务器的地址http://192.168.1.200,没有问题,但我正在测试一个调用公共服务器的 Web 应用程序,然后将浏览器重定向回我的公共 IP 地址(技术上是动态 DNS 主机名)。
我可以使用类似以下工具来屏蔽 IPTor,但它的速度非常慢,并且维护会话很容易出错。我可能只能完成 5 个请求中的 1 个,整个过程每次都要花费 20 分钟以上。
答案1
以下是 Netgear 针对您的路由器的页面:WGT634U 108 Mbps 无线存储路由器。
您可以点击文档选项卡下载手册。不幸的是,手册建议 LAN 计算机不能使用 WAN IP 地址访问 LAN 计算机 Web 服务器。请参阅第 90 页:
本地 PC 必须使用 PC 的本地 LAN 地址访问本地服务器。本地 PC 尝试使用外部 IP 地址访问服务器将会失败。
在同一产品页面的“知识库/常见问题解答”选项卡下,我发现我无法通过主机名访问我的网络服务器这解释了一种可能的解决方法:使用计算机上的 hosts 文件将外部域名映射到 LAN IP 地址。
答案2
这可能与 NAT 设置有关,具体取决于您的路由器。我在 WRT54G 后面运行了一段时间的服务器,并且必须设置 NAT 选项,以便连接进入服务器而不是路由器本身。
一旦其他设置正确,您可能能够使用动态 DNS 名称。我可以这样做,但在启用 NAT 设置之前,通过动态 DNS 发送请求会超时。此外,请确保路由器的接口对外部请求关闭,并且端口设置为始终转发外部请求。
答案3
这其实是一个非常常见的问题。一种选择是将“动态 DNS 主机名”添加到本地主机文件中。我假设您为此使用了 dyndns 之类的服务。
主机条目将如下所示
192.168.1.200 外部 DNS 名称
这样您的机器就会使用内部地址进行解析。如果这是一台笔记本电脑,并且您可能在另一个网络上使用它并访问您的网站,您将需要删除该条目。
或者,有些路由器(不是很多)有内置 DNS 服务器,您可以在其中指定内部名称的地址。那就更好了。
另一个选择是在路由器中使用静态路由。但是我并没有取得太大的成功,而且它最终可能会导致无法访问路由器的网页。