域名在本地网络不可用,但在外部网络可用!

域名在本地网络不可用,但在外部网络可用!

在我们的本地网络中,我们有一个Ubuntu Server 20.4,它托管一个 Web 应用程序。我配置了路由器和域的 DNS,安装了Lets'Encrypt证书,并成功https://mydomain.com显示了我的 Web 应用程序。

我的问题是,当我尝试从本地网络内部查看域时https://mydomain.com,浏览器响应“无法访问此站点,但当我连接到站点外部时,该站点可见。

我必须在 Ubuntu 服务器中应用新设置,或者这是路由器的配置问题?

一个解决方案...

我编辑了hosts电脑中的文件(C:\Windows\System32\Drivers\etc\hosts),添加了一条记录

192.168.0.100 我的域名.com

并且该网站现在可见,但我想知道如何将设置应用于 Ubuntu 服务器。

编辑1 如果我nslookup mydomain.com从 Windows 的命令行运行,我会得到:

Server:  one.one.one.one
Address:  1.1.1.1

Non-authoritative answer:
Name:    mydomain.con
Address:  My_External_IP

两者Ubuntu Server和我的 PC 都位于同一子网。我已向路由器添加了一些端口转发(80、443),以便公开服务器。

答案1

那么“问题”在于你的 Windows 机器(以及网络上的其他机器)将域名解析为公共 IP 地址,这与 192.168.0.100 不同...因此路由不同。当您尝试访问 192.168.0.100 时,流量将保留在您的 LAN 内。如果您使用公共 IP 地址,那么您的流量将在 Internet 上传输并通过路由器返回给您。

因此,您确实应该在路由器上设置端口转发,以便对端口 80 和 443 的传入请求转发到服务器的本地地址,即示例中的 192.168.0.100。

如果您的 LAN 中有自己的 DNS 解析器,那么您只需在本地配置该域(“区域”)即可返回私有 IP 地址,仅供本地用户使用。请参阅水平分割 DNS。

如果您不需要维护很多客户端,编辑 hosts 文件可能适合用于测试和短期使用。否则,我的建议是为您的 LAN 设置本地 DNS 解析器(和转发器)。示例:dnsmasq。

相关内容