因此,我最初在旧电脑上设置了一个 Web 服务器。我从 Google 购买了一个域名,并配置了名称服务器以指向 FreeDNS,我使用他们的动态 IP 服务。我还使用 LetsEncrypt 获得 SSL 证书。
问题是...当我想从自己的网络连接到我的网站时,我不能只输入 URL。我必须输入我的 Web 服务器的 IPv4 LAN 地址。它也不能通过 https:// 连接。这是正常的吗?还是我配置错误了?
当我最初使用 CertBot 配置我的 HTTPS 设置时,我最初尝试从本地主机连接,但它无法连接到给定的 URL,因此我不得不连接到其他网络来运行 SSL 证书。
当我离开网络时,我可以正常连接到网站。这似乎与我在远程/本地工作时使用 ssh 的方式类似(如果在本地工作,我会 ssh 进入本地 IP,如果我需要远程 ssh,我会将端口配置为指向这台机器),所以我认为这是正常的。
这可能非常基本,我认为这很正常,但我不知道该去哪里搜索。但我只是想出于安全目的再检查一下,因为我从未运行过自己的网络服务器。
答案1
如果 DNS 返回的是公有 IP 地址,而您位于私有网络内,那么您看到的行为就相当常见。这通常是因为防火墙不允许您从网络内部连接到公有 IP。如果可能的话,您通常最终必须配置防火墙以允许它。
您有多种选择,具体取决于您拥有哪些资源。您可以为您的域托管一个内部 DNS 服务器,并将 DNS 记录指向内部主机 IP 地址。
某些防火墙允许您进行 DNS 转换。例如,Cisco 在 ASA 平台中将此列为“DNS 检查”。在这种情况下,ASA 会读取 DNS 响应,如果 DNS 记录响应与公共 NAT IP 匹配,它会将 DNS 响应更改为内部服务器的响应。
了解您的 DNS 主机是否支持“视图”,这允许您根据 DNS 请求的来源定义不同的 DNS 响应。这将允许您根据来源定义不同的 IP 响应,这样您就可以返回自己的私有 IP,而向其他人返回公开 IP。
然后是经典的 hosts 文件。Linux 平台上的 /etc/hosts 或 Windows 上的 c:\windows\system32\drivers\etc\hosts。添加与私有地址和主机名匹配的条目。例如:
192.168.0.5 www.mydomain.com
最后,要确定你的防火墙是否允许你创建一条规则,允许在访问公共 IP 时将连接路由回内部。