我有家庭服务器 ip 192.168.1.10 和域名(例如来自 namecheap 的 example.com)。我确实指向了我的动态 IP,并让 ddclient 将我的 ip 更新为 namecheap 的 A 记录。同时我的路由器将所有流量从端口 80、22、8080 转发到我的本地服务器 ip 192.168.1.10。一切正常,除非我尝试在我的内部网络中访问我的域名(例如 example.com),否则会出现“ERR_NAME_NOT_RESOLVED”。如果我使用我的本地服务器 ip 192.168.1.10,则可以正常工作,如果我使用我的动态公共 ip(例如 45.xxx),也可以正常工作。我可以从外部网络访问我的网站(例如 example.com),但不能从内部访问。谁能告诉我我做错的地方?这是用于教育目的的家庭服务器。
答案1
您的 192.168.1.1 路由器很可能只是一个中继代理,它会将您网站的 DNS 请求传递到(最有可能是)您的 ISP 的 DNS 服务器,但由于某种原因(我真的不知道为什么)该服务器没有响应该请求,因此您无法取回您的 PC 可以通信的 IP 地址(计算机与 IP 地址通信,而不是直接与名称通信)。
解决这个问题的方法是将路由器中的 DNS 服务器更改为类似Google DNS或者开放DNS(滚动到页面底部查看要使用的地址)而不是使用 ISP 在 DHCP 中提供的地址。无论出于何种原因,您的 ISP 的 DNS 服务器都没有响应解析您的名称查找请求的请求。实现此操作的具体方法可能取决于您的特定路由器和配置。
另外,您可以在 hosts 文件中手动输入,将您的网站名称手动指向公共 IP 地址,但如果您的 IP 地址经常更改,这可能不是一个好答案。