开发 Leader 和一线开发的区别在于:普通一线开发很多时候都只接触业务编码,不需要关注除开发之外的其他事情。但是作为一个开发 Leader,不仅仅需要懂开发层面的东西,还需要懂得运维层面的东西。
最近产品同学就找到我:大佬,运营给了个需求,需要你搞定一下。事情是这样的:公司要接入一个第三方邮件供应商,其中有一个环节需要做子域名的 NS 记录解析。当时我一脸懵逼,什么是子域名的 NS 记录?到底要干嘛?虽然我可以直接把事情丢给运维人员,但是作为一个责任感爆棚的开发 LD,必须要把事情的整个流程搞清楚呀。
经过一番了解,我了解到域名解析有好几种类型,包括:A记录、CName记录、MX记录、NS记录等。作为开发来说,虽然不需要深入了解运维的知识,但是还是需要弄懂这些不同的解析类型的原理。简单地说,域名的解析类型就是在不同使用场景下的映射关系。
A记录
A记录,简单地说就是配置一条从域名到IP的映射关系。 我们都知道当我们输入域名的时候,其实浏览器会帮我们去 DNS 服务器上解析这个域名对应的 IP 地址,浏览器最终访问的其实是一个 IP 地址。而这里的 A 记录其实就是配置域名到 IP 的映射关系,让 DNS 服务器解析的时候能找到对应的 IP。
一般来说,要设置 A 记录只需要到你域名所属的服务商管理后台上进行设置即可。例如在阿里云上添加 A 记录的界面如下:
在上面的设置页面中,我选择了 A 记录类型。主机记录填写为:hello.csyimg.com,记录值为 192.168.1.1,TTL 值为 10 分钟。那么就表示我想为 hello.csyimg.com 这个域名创建一条映射到 192.168.1.1 这个 IP 的映射关系,其缓存有效时间为 10 分钟。
那么当用户在浏览器访问 hello.csyimg.com 这个域名的时候,DNS 服务器就会将请求转发到 192.168.1.1 这个 IP 上。这里的 TTL 值表示其在 DNS 服务器上缓存的时间,等时间到了那么其会清除掉这条记录,下次会再次去其对应的 DNS 服务器上去获取最新的记录值。
TTL 值存在意义在于:用户从浏览器到服务器会经过很多个 DNS 服务器,而 DNS 服务器会接收大量请求,为了提高解析效率会设置缓存。当你首次访问 hello.csyimg.com 时,如果本地的 DNS 服务器没有 hello.csyimg.com 的 A 记录,那么这次就会保存下来,等到下次访问的时候,直接就返回该记录,就不需要长途跋涉那么远去查询了。但是当我们要变更解析地址的时候,这时候就需要等10分钟才能生效了。
注:关于 DNS 解析的原理这里不深入介绍,有兴趣的话在公众号后台回复「DNS解析原理」可以查看我写的另一篇文章。
常见的主机记录值有下面几个,基本上涵括了我们日常使用的所有情况。
CNAME记录
CNAME 记录,即别名记录(Canonical Name),指的是设置一个域名的别称,即建立别名到域名的映射关系。
CNAME 记录通常用于把不同的域名转到同一个域名上,例如京东初期的域名为 360buy.com,后面更换成 jd.com,那么当用户访问 360buy.com 的时候就需要将自动为其跳转到 jd.com 域名。这时候就可以设置一个 CNAME 记录了。
在阿里云上添加 CNAME 记录也很简单,其设置的内容与设置 A 记录的类似,只不过记录值此时必须是一个域名,而不能是一个 IP。
MX记录
MX(Mail Exchanger)记录的作用是用于定位邮件服务器的地址。
例如一个用户给 user@abcdef.com 的用户发封邮件,此时该用户的所属的邮件系统会通过 DNS 服务器来查找 abcdef.com 这个域名的 MX 记录。如果存在,就去查找 MX 记录值对应的 A 记录,从而得到邮件服务器的IP地址,并将这封邮件发送到这台服务器上。可见,MX记录和A记录是分不开的。总的来说,MX记录是为了让对方找到你的邮件服务器。所以,如果想顺利收信,就必须为你的邮件服务器创建合法有效的MX记录。
在阿里云设置 MX 记录的页面如下所示,其中记录值也必须是一个域名。当用户要发邮件给 abc@csyimg.com 的时候,会通过 DNS 服务器查找 csyimg.com 的 MX 记录。此时会找到记录值为 mail.shuyi.me 的 MX 记录,之后会去查找 mail.shuyi.me 的 A 记录,从而找到 csyimg.com 这个邮件服务器的 IP 地址。
NS记录
NS 记录是指将子域名指向其他 DNS 服务器解析。有时候在进行技术合作的时候,需要将子域名托管给其他公司,这时候就需要为该子域名设置 NS 记录。
在阿里云设置 NS 记录的页面如下,其中记录值必须是一个域名,这个域名对应了一台 DNS 服务器。例如我下面的设置就将 doc.csyimg.com 这个子域名托管给了 ns.baidu.com 这个 DNS 服务器。当我将该子域名 doc.csyimg.com 托管给 ns.baidu.com 这台 DNS 服务器之后,我也可以在这台 DNS 服务器上设置 A 记录、MX 记录了。
总结
说到这里,我相信大家都已经比较清楚了。这里总结一下域名各解析类型的作用:
- A 记录:设置域名到 IP 的映射
- CNAME 记录:设置域名到域名的映射
- MX 记录:设置邮件服务器的映射
- NS 记录:设置子域名 DNS 服务器的映射
除了上面讲到的这几种域名解析类型,其实还有很多域名解析类型:
- AAAA记录:将域名指向一个 IPV6 地址。
- SRV记录:记录提供特定的服务的服务器。
- TXT记录:文本长度限制512,通常用作SPF记录(反垃圾邮件)。很多时候也用来验证对域名的所有权。
- CAA记录:CA证书颁发机构授权校验。
- 显性URL:将域名重定向到另外一个地址。
- 隐形URL:与显性URL类似,但是会隐藏真实目标地址。
关于域名解析类型,虽然对于开发人员来说平时用不到。但如果你当了 leader,需要与运维打交道了,那么这些基础知识可是必备的哦。觉得有用,可以点击「收藏」以备不时之需哦。
听了域名的解析类型,是不是觉得干巴巴的很不好记,貌似没有什么用?其实这解析类型可是大有用处,它与 DNS 的解析类型有千丝万缕的联系,下篇我将带你介绍 DNS 解析的原理。