情况:我有一个域名,假设为 mydomain.com。

在我的本地网络的服务器上,我运行了一些服务,包括 Nginx 代理管理器。

在 NPM 中,我配置了各种主机,例如 service1.mydomain.com、service2.mydomain.com 等等。

所有这些服务都是公开可访问的。因此我可以从网络内部和外部访问 service1.mydomain.com。

在我自己的 DNS 服务器上,我为 *.mydomain.com 创建了一个指向 NGINX 的 A 记录,以便我可以使用它们的 FQDN 从我自己的网络内访问我的所有服务。

其中一项服务(假设 service3.mydomain.com)比较敏感。因此我设置了一个名为“仅 LAN”的访问列表,该列表仅允许 RFC1918 地址。

问题出现在这里:当此访问列表在 service3.mydomain.com 上处于活动状态时,即使从我自己的网络内访问资源,也会收到 403 禁止错误。

查看 NPM 访问日志:

[error] 10010#10010: *2988 access forbidden by rule, client: {MY PUBLIC IP}, server: service3.mydomain.com, request: "GET / HTTP/2.0", host: "service3.mydomain.com", referrer: "https://{PRIVATE IP}:{PORT}/"

因此,我可以从 LAN 内部通过我的公共 IP 地址访问内部资源。这是为什么呢?

这不是 DNS 问题,因为 dig service3.mydomain.com 提供了具有私有 IP 的正确本地 A 记录,我可以正常 ping 它。

也许值得了解的是:如果我从 ISP 拔掉电缆,我仍然可以完美地访问所有服务。并且具有“LAN ONLY”ACL 的服务现在可以正常工作,因为日志确认我正在从我的私人客户端 IP 访问它们。我的浏览器不使用 TLS 或 HTTPS 上的 DNS,它只使用主机 DNS 解析器。

0