![域名在本地网络不可用,但在外部网络可用!](https://linux22.com/image/1182170/%E5%9F%9F%E5%90%8D%E5%9C%A8%E6%9C%AC%E5%9C%B0%E7%BD%91%E7%BB%9C%E4%B8%8D%E5%8F%AF%E7%94%A8%EF%BC%8C%E4%BD%86%E5%9C%A8%E5%A4%96%E9%83%A8%E7%BD%91%E7%BB%9C%E5%8F%AF%E7%94%A8%EF%BC%81.png)
在我们的本地网络中,我们有一个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。