似乎某些家用路由器固件设计为与动态 DNS 服务(例如 noip 和 dyndns)配合使用,以便为消费者 ISP 后面的服务器提供子域服务。同样,是否有任何动态 DNS 服务可与共享网络托管帐户配合使用?
例子
例如,Dreamhost 有一个可以检索域名 IP 地址的 API。理论上,动态 DNS 服务会定期向 Dreamhost API 发出网站 IP 地址的请求。如果 Dreamhost 上的 IP 地址发生变化,DNS 主机会在发现差异后立即自动对该网站的区域文件进行必要的更改。
为什么?
过去,我曾付费在共享主机上购买静态 IP 地址,我的域名在 GoDaddy 注册,名称服务器设置为 EveryDNS。由于共享主机发生灾难性的硬件故障,我的网站被转移,IP 地址也发生了变化。
在上述示例设置中,DNS 记录会自动更新。相反,我必须手动更新我的 A 记录。
问题摘要
是否有动态 DNS 托管服务和共享网络主机可以允许这样做?
上述例子中提出的解决方案是否可行?
奖金 (冒着暴露我对这个问题的无知的风险): 除了 DNS 之外,还有其他方法可以检测网站的 IP 地址吗?也许共享主机目录中的脚本可以检测到 IP 更改并通知 DNS 主机?
提前致谢!
答案1
您已经提到了 DynDNS,听起来您只缺少客户端。他们提到了几个兼容 Linux 的客户端他们的网站。
- dd客户端
- 伊纳丁
将其中任一种与动态 DNS 服务结合使用应该可以实现您想要的效果。
我最初假设您的共享主机将为您提供 shell 访问权限。如果没有 shell 访问权限,事情就会变得有点棘手。首先,您需要某种方式定期运行脚本。一些 Web 应用程序通过在每次页面加载时调用例程来实现“假 cron”,但当您的网站无法访问时,这无济于事。这意味着您需要访问 crontab。
如果您有能力定期运行任务,则可以开发一个脚本,将新的 IP 地址发送到您控制的另一台主机,该主机也是权威 DNS。接收主机将使用新的 IP 地址更新区域文件,然后重新加载 DNS 配置。
TL;DR 不,我不知道有任何服务已经提供此功能。
答案2
到目前为止,这种情况只发生过一次(发生在你身上),而且是出于特殊原因。考虑到动态 DNS 的缺点,我真的认为不值得这么麻烦。如果你仍然想这样做,只需获取一个 DDNS 客户端并在服务器本身上运行它,因为这是它唯一能正常工作的地方。
如果您非常担心,您还应该实施某种形式的监控,以确保服务器可访问,如果不可访问,则提醒您。
答案3
定期向 Dreamhost API 请求网站的 IP 地址。如果 Dreamhost 上的 IP 地址发生变化,DNS 主机会自动对 [DNS] 区域文件进行必要的更改
不,那不存在。
然而,确实存在第三方服务,它们通过发出 HTTP 请求来监控您的网站,并在您的网络服务器停机时更改 DNS。但是,这些服务不会“自动”与您的网络主机集成,并且不知道您的网络主机是否为您设置了新服务器。您必须自己运行 2 个或更多网络服务器(例如使用 2 个不同的网络主机),并让服务故障转移到您指定的服务器。
此类服务的示例包括DNS Made Easy 的 DNS 故障转移, 和边缘导向器以及他们的监控服务。还有其他几家公司提供类似的服务,但价格通常更高。
请注意,使用 DNS“技巧”并不是实现高可用性的完美解决方案;因为 DNS 记录由 ISP 和 Web 浏览器缓存。因此,未知数量的用户不会立即被定向到备份服务器,这需要一些时间。
您还可以查看云Flare。它们并不像您问到的那样通过“动态 DNS”运行,而是通过其节点网络代理您的内容。但是,即使您的服务器瘫痪,它们也可以在一定程度上通过缓存内容提供服务。
答案4
这可能涉及使用php或其他脚本语言来获取 IP 地址(因为是共享主机,所以选择非常有限),然后以某种方式抓取那ip 地址并将其传递给 DynDNS 脚本 - 大概会使用 curl 和 php 执行某些操作(如果可用)。抱歉不够精确,但共享主机确实很有限,而且您没有太多可用的工具。