我有一个域名 example.com,它有一个指向我的外部 IP 的 A 记录。端口 80 已转发到我的服务器。但是,当我尝试从本地网络内部(外部 IP 后面)访问它时,我无法连接。(不仅是该端口,所有端口都无法连接)这在外部确实有效(端口转发设置正确)
有人能解释一下这是为什么吗?(这与我的路由器有关吗?)现在,我已经通过更改主机文件解决了这个问题,因此它指向内部 IP,但我想知道为什么我必须这样做。
有没有非黑客方法可以解决这个问题?那么我本地网络中的设备也可以使用域名访问服务器(无需进行任何更改)?
答案1
这是路由器需要做的事情 - 通常称为“Hairpin NAT”或“NAT loopback”。如果您的路由器支持此功能,启用此功能应该可以让一切正常。在某些路由器上,这是全局设置,而在其他路由器上,您需要在每个 NAT 规则上进行设置。
如果您的路由器不支持此功能,那么下一个最简单的方法是拆分 DNS。这需要为本地计算机设置一个本地 DNS 服务器,该服务器具有与公共 DNS 相同的所有记录。但对于 LAN 上的服务器,您可以改为使用私有 IP 地址。此方法的缺点是需要维护两组 SNS 记录。