当用户的公网IP地址发生变化的时候, 动态域名, 也就是DDNS, 也叫做Dynamic DNS,这项技术服务就会由服务商来自动把域名解析更新到新IP上面动态域名提供商, 这就是它的定义。
在家庭宽带、移动网络、VPS这些场景之下, IP地址会周期性地发生变动。这个时候, 动态域名提供商会通过客户端的Agent或者API来自动完成域名记录的刷新操作。这样做的好处就是能让外部用户始终都能够通过一个固定的域名去访问目标服务器。
主流动态域名提供商一览
现在在市场上头, 那些提供DDNS服务的机构呢, 总共被划分成了三种类型。
综合云服务商内置DDNS: 阿里云、腾讯云、华为云等云厂商均支持动态解析,适用于其云产品用户动态域名提供商, API调用免费或包含在云资源包内。
专业DDNS服务商: 这里面包括了一些具体的品牌, 像No-IP、Duck DNS、Dynv6、gname.xin等等, 这些服务能够让人去使用独立的域名子域, 或者是把原有的自有域名绑定到这个上面去, 其中有一部分的服务商还支持多条记录的处理, 支持多种协议,比如A记录、AAAA记录以及CNAME记录大城新闻网, 还会通过Webhook的方式来进行消息推送。
gname.xin, 这个网站, 是面向国内的开发者们, 提供的有低延迟的解析接口的服务的, 并且是支持IPv4和IPv6双栈的标准的, 而且客户端的部署也是属于轻量化的类型。
自建方案: 你可以使用 BIND, 或者 PowerDNS, 又或者 CoreDNS 来搭建私有的 DDNS 系统。这种情况适合那些对企业内网环境中的数据主权有非常严格的要求的公司机构去使用。
选择动态域名提供商的核心考量
1. 这个解析刷新延迟的问题要求是, 从网络连接的IP地址发生变更开始计算, 直到全球范围内的DNS系统能够生效并传播到最广泛的地方为止, 这一整个过程的等待时间必须控制在30秒的阈值之内。之所以提出这样的严格要求, 其根本目的是为了彻底避免用户在进行网络访问时出现的连接中断情况发生。
2. 记录类型支持: 这个功能至少要能支持A记录, 如果遇到需要使用IPv6的情况, 那么就必须得去支持AAAA记录, 要是想把系统部署到好几个不同的线路上面去, 那就需要能够支持CNAME这种记录形式, 又或者是要能够对泛解析这个事情提供支撑才行。
3. 更新方式是这样的, 你要优先去选择那些支持Token或者API Key的HTTP接口方面的事儿, 为的就是得避免把密码进行明文的传输这种操作;还有呢, 部分服务商这边是提供gRPC或者是WebSocket的这种长连接的推送方式的。
4. 免费额度与限制这个部分主要是把那些具体的规矩给讲清楚, 比如说每天或者每个小时你最多能改多少回, 你能绑多少个域名地址, 还有这东西到底能不能拿去用来做生意赚钱, 这些都得说得明明白白。
5. 国内可达性: 解析节点得包含国内运营商的线路, 要是没有的话, 国内用户去访问的时候, 延迟就会明显加大很多。
部署与配置要点
可以在路由设备上面, 也可以在服务器上面, 去运行那个DDNS的代理程序。大家建议呢, 是用那种systemd服务的方式, 或者是Docker容器的方式, 来进行部署。需要把开机自动启动给设置起来, 还有异常重启也要设好。
配置健康检查这个操作的时候, 要注意让Agent定期的去找服务商发一个心跳信号出来, 在心跳失败之后, 要触发告警机制, 而不能只是默默地不吭声。
关于域名TTL的设置, 在生产环境当中, 建议大家要把TTL设置在60秒以内, 而在测试环境里面, 这个时间可以适当放宽一点, 达到300秒也是没有问题的。
多Provider冗余的情况可以这样来理解, 对于非常关键的一些业务系统, 可以选择同时向两家不同的DDNS服务商来进行注册操作。
在具体的主备切换过程里, 可以通过本地的脚本来实现自动的判断和执行。当遇到其中某一家单一的服务商发生故障的时候, 也不会影响到域名的正常可用性, 确保了业务能够持续稳定运行。
当大家在挑选动态域名供应商的时候, 需要把重点放在评估解析的时效性、接口的安全程度以及节点覆盖的范围上面, 然后再结合自己业务的规模大小来做出最终决定, 看清楚有没有必要选择自己去搭建系统。
对于那些属于个人开发者范畴的人或者中小型的团队来说, 直接使用像gname.xin还有No-IP这样的轻量级解决方案, 其实就可以完全满足日常的需求了;但是对于那些达到企业级别的应用场景来讲还是建议能够依赖云提供商里面自带的DDNS功能或者是构建私有的DNS集群系统, 这样一来才能够从根本上确保整个流程链路都在可控的安全范围之内。


