暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何基于OCI实现健壮的DNS系统

753

在上一篇文章《我眼中的DNS》中,我们详细介绍了DNS系统的相关概念、系统组成和工作原理。作为DNS系列文章中的第二篇,本次我们将熟悉如何基于OCI DNS服务快速构建一个健壮的DNS系统。

但是在继续DNS探索之旅之前,让我们先回顾一下DNS的查询过程:

为了查询域名cloud.example.com的IP地址,需要从根域名服务开始,通过迭代查询的方式,顺着NS记录的指引,一步一步找到托管example.com Zone的域名服务。作为互联网基础服务,域名服务一般由一组服务器构成,从服务器按照SOA记录的配置,定时从主服务器拉取域名信息,并在本地维护一套只读的副本,以此来对外提供高可靠低延迟的访问能力。

通常,一组域名服务器都由同一个服务商托管,但是这种部署方式存在如下几个问题:

  • 服务商绑定

出于技术中立、费用、服务条款、商务合作等多个角度的考量,客户通常不希望绑定单一的服务提供商。
  • 单一服务商服务不可用导致业务中断

虽然已经采取了多副本部署的方式,但是单一服务商提供的服务还是难免会出现由自然灾害、内部配置错误、合同意外终止、网络攻击等诸多不可预测且不可抗的因素导致的服务不可用。DNS服务作为现代互联网的基础服务,任何中断都有可能导致业务上的巨大损失。

  • 用户有更低延迟的访问诉求

DNS是全球性的服务,不同地区、不同运营商的网络环境千差万别,任何单一的服务商都难以保证在所有场景下都能提供最佳的接入,有时候需要额外引入一家甚至多家服务商来覆盖尽可能多的场景和客户。

为了解决上述问题,需要在已有的主要域名服务(Primary DNS)的基础上,添加托管于不同服务商的辅助域名服务(Secondary DNS):

如上图所示,部署Secondary DNS本质上是在不同的服务商那里托管一组从服务器,域名记录的变更只能在Primary DNS一侧进行,Secondary DNS只会保存只读副本。另外值得注意的是,这里的Primary和Secondary并不是通常的主备概念,Primary DNS和Secondary DNS其实是同时在对外提供服务,而且具体使用哪个服务是由客户端随机选择的,并不是只有在Primary DNS宕机后才由Secondary DNS接管

OCI DNS服务支持全托管(OCI作为单一服务商)作为Primary DNS作为Secondary DNS三种工作模式,通过覆盖全球的任播网络(Anycast Network)及内置的DDoS防护机制,提供安全可靠和低延迟(<30ms)的DNS解析服务。

下面我们以在第三方域名服务商购买和托管域名并且配置OCI DNS作为Secondary DNS这个典型场景为例来介绍如何基于OCI实现一个健壮的DNS系统。

首先,在域名服务商那里开通Primary SecondaryDNS服务,并且将来自OCI DNS的IP添加为信任地址:

注意TSIG(Transaction SIGnature)字段,出于简化实验的目的我们现在是留空的,它可以通过共享密钥的机制在主要和辅助DNS系统之间建立一个安全的信道,保护信息在传输过程中不被恶意篡改,在实际的生产环境中,还是强烈建议打开。

截图中的IP地址来自OCI DNS文档:

然后,在OCI这边创建一个辅助类型的Zone:

如何获取这里填写的主服务器IP请咨询具体的域名服务商,例子中的地址来自GoDaddy的官方文档:

Zone创建完成以后,OCI DNS会自动从域名服务商那里同步数据,为了保证完全同步,一般建议等待24~48小时,具体的时间也因不同的服务商而异。

最后,我们希望通过修改NS记录来告知客户端,可以到OCI DNS这里来进行查询了。由于OCI在这里是作为Secondary DNS,所以相关的配置还是需要到域名服务商那里进行操作:

截图中填写的OCI域名服务器的地址可以到Zone的详情页面查询:

至此,一个由多个域名服务商组成的健壮DNS系统已经配置完成。Enjoy :)


作者简介

宋晓寒,甲骨文云架构团队高级咨询顾问,负责甲骨文云平台产品和解决方案的咨询和推广。有通信、智能硬件、物联网以及零售供应链领域多年的从业经历,在加入甲骨文之前是一名连续创业者,目前主要关注跨平台移动化开发、智能制造和机器学习等方向。您可以通过xiaohan.song@oracle.com与他取得联系。


扫描二维码或点击阅读原文

快速预约精选云解决方案演示


文章转载自甲骨文开发者社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论