我尝试通过公共 IP 地址访问 LAN 上的服务器。外部客户端可以正常连接,但我无法从 LAN 内部进行连接。是我的网关的 NAT 设置中有一条单独的规则(它将子网地址转换为公共接口 IP,但其他方面相同),但它似乎无法正常工作。
我该如何正确设置才能通过公共 IP 地址访问本地资源?
答案1
最常见的问题是网关将数据包的目标地址重写为内部服务器,而不是源地址。因此,当内部服务器响应时,它会发现数据包来自本地网络上的某个设备,并直接将数据包发回 - 而客户端无法判断这是来自服务器的,因为数据包上仍然有内部地址,而不是公共地址。
标准修复方法是强制流量通过网关返回。实现此目的的一种方法是将公共地址重定向到的服务器置于“DMZ”中,这样客户端和服务器之间的流量就必须通过路由器。
另一种方法是将 NAT 应用于内部连接到外部 IP 的源地址,以便它们看起来像是来自网关。然后,内部服务器将响应网关,这将撤消两个都NAT 进行更改,并将数据包发送回内部客户端。
答案2
我知道这不是您要问的,但我设置内部网络的方式是通过拆分 DNS:网络内的机器在查找 home.domain.tld、mail.domain.tld 等时获取内部地址。无需担心地址转换(当然,除非客户端和服务器之间有其他东西),客户端不关心它是否在与可公开路由的地址通信,服务器端只会关心您是否有专门绑定到外部接口的东西,而不是其他接口,并且与 NAT 不同,所有内部主机在日志文件中看起来并不相同(如果您需要使用上述日志来诊断本地网络上遇到的问题,这可能会有所帮助)。
答案3
听起来您已经尝试使用拆分 DNS(DNS 转发器)。您可能需要检查 DNS 转发器页面上的几个复选标记。请参阅此示例并根据示例进行检查。 http://doc.pfsense.org/index.php/Why_can%27t_I_access_forwarded_ports_on_my_WAN_IP_from_my_LAN/OPTx_networks%3F
我遇到了同样的问题并且它似乎解决了问题。