1. 小声哔哔
? ? DNS(Domain Name System),即域名系统,不论是在容器化还是虚拟化场景下都是比较基础的一个服务,主要提供域名和 IP 地址之间映射关系的查询服务。
? ? DNS更为很多应用提供了动态服务发现和全局负载均衡(Global Server Load Balance,GSLB)的机制。这样,DNS 就可以选择离用户最近的 IP 来提供服务。即使后端服务的 IP 地址发生变化,用户依然可以用相同域名来访问。同时,域名也提供了一种便于人脑快速记忆的能力,毕竟相较于一串IP数字,域名相对而言更便于传播,比如www.baidu.com
2. 域名与DNS
? ? 域名通过点分割层级,越靠后的分段则层级越高。我们用最常见的www.baidu.com举例。最后面的com是顶级域名,中间的baidu是二级域名,而最左边的www则是三级域名。
? ? 相对应的,域名解析其实也是用递归的方式(从顶级开始,以此类推),发送给每个层级的域名服务器,直到得到解析结果。因此,我们的Linux服务器中还需要配置DNS解析服务器地址,用于通过域名访问外部服务,比如电信提供的DNS服务器地址:114.114.114.114。我们可以执行:cat /etc/resolv.conf命令来查看我们机器上配置的DNS服务器地址,也可以执行vim /etc/resolv.conf相应的修改我们主机的DNS服务器地址。
3. 常见的DNS记录
资源记录类型 | 含义 | CNAME记录 | 又称为别名记录,就是给一个域名起一个别名,常用于后台IP更换,此时可以申请一个新域名,将旧域名CNAME到新域名,外部调用不感知,且可以快速切换,回滚。 例如: www.baidu.com.?? 1200?????? IN??? CNAME? www.a.shifen.com. | A记录 | 也称为主机记录,就是域名和ip地址的对应关系 例如: www.a.shifen.com. 300? IN??? A???? 180.101.49.11 | NS记录 | NS记录称为域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析 例如: a.shifen.com.???????? 1200?????? IN??? NS?? ns1.a.shifen.com. a.shifen.com.???????? 1200?????? IN??? NS?? ns2.a.shifen.com. | PRT记录 | 又称为逆向查询记录,用于从ip地址中查询域名 可执行dig -x IP @DNS服务器尝试查看 例如:dig -x 202.106.196.115 @8.8.8.8 115.196.106.202.in-addr.arpa. 18000 INPTR linedns.bta.net.cn. | SOA记录 | 起始授权记录,用于一个区域的开始,SOA记录后的所有信息均是用于控制这个区域的,每个区域数据库文件都必须包含一个SOA记录,并且必须是其中的第一个资源记录,用以标识DNS服务器管理的起始位置,SOA说明能解析这个区域的dns服务器中哪个是主服务器 |
4. 查看DNS解析工具
? ? 常见的DNS解析工具有两种,nslookup和dig,因为dig命令的功能相对丰富一点,所以这里着重讲dig命令。
? ? 我们可以使用dig +trace命令查看DNS递归解析的详细情况,这里还是拿www.baidu.com举例。
? ? 登录Linux主机,vim /etc/resolv.conf配置好DNS服务器后(例如:114.114.114.114),执行命令:dig +trace www.baidu.com,得到输出:
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> +trace www.baidu.com
;; global options: +cmd
.??????????????????? 171099??? IN??? NS?? g.root-servers.net.
.??????????????????? 171099??? IN??? NS?? h.root-servers.net.
.??????????????????? 171099??? IN??? NS?? i.root-servers.net.
.??????????????????? 171099??? IN??? NS?? j.root-servers.net.
.??????????????????? 171099??? IN??? NS?? k.root-servers.net.
.??????????????????? 171099??? IN??? NS?? l.root-servers.net.
.??????????????????? 171099??? IN??? NS?? m.root-servers.net.
.??????????????????? 171099??? IN??? NS?? a.root-servers.net.
.??????????????????? 171099??? IN??? NS?? b.root-servers.net.
.??????????????????? 171099??? IN??? NS?? c.root-servers.net.
.??????????????????? 171099??? IN??? NS?? d.root-servers.net.
.??????????????????? 171099??? IN??? NS?? e.root-servers.net.
.??????????????????? 171099??? IN??? NS?? f.root-servers.net.
;; Received 239 bytes from 114.114.114.114#53(114.114.114.114) in 25 ms
com.???????????????????? 172800??? IN??? NS?? m.gtld-servers.net.
com.???????????????????? 172800??? IN??? NS?? f.gtld-servers.net.
com.???????????????????? 172800??? IN??? NS?? b.gtld-servers.net.
com.???????????????????? 172800??? IN??? NS?? l.gtld-servers.net.
com.???????????????????? 172800??? IN??? NS?? j.gtld-servers.net.
com.???????????????????? 172800??? IN??? NS?? d.gtld-servers.net.
com.???????????????????? 172800??? IN??? NS?? c.gtld-servers.net.
com.???????????????????? 172800??? IN??? NS?? e.gtld-servers.net.
com.???????????????????? 172800??? IN??? NS?? g.gtld-servers.net.
com.???????????????????? 172800??? IN??? NS?? i.gtld-servers.net.
com.???????????????????? 172800??? IN??? NS?? a.gtld-servers.net.
com.???????????????????? 172800??? IN??? NS?? k.gtld-servers.net.
com.???????????????????? 172800??? IN??? NS?? h.gtld-servers.net.
;; Received 1173 bytes from 199.9.14.201#53(b.root-servers.net) in 60 ms
baidu.com.??????????? 172800??? IN??? NS?? ns2.baidu.com.
baidu.com.??????????? 172800??? IN??? NS?? ns3.baidu.com.
baidu.com.??????????? 172800??? IN??? NS?? ns4.baidu.com.
baidu.com.??????????? 172800??? IN??? NS?? ns1.baidu.com.
baidu.com.??????????? 172800??? IN??? NS?? ns7.baidu.com.
;; Received 817 bytes from 192.35.51.30#53(f.gtld-servers.net) in 222 ms
www.baidu.com.????????? 1200?????? IN??? CNAME? www.a.shifen.com.
;; Received 72 bytes from 14.215.178.80#53(ns4.baidu.com) in 46 ms
dig trace的输出,主要包括四部分。
- 从114.114.114.114查到的一些根域名服务(.)的NS记录。
- 从NS记录结果中选一个(b.root-servers.net),并查询顶级域名com.的NS记录。
- 从com.的NS记录中选择一个(f.gtld-servers.net),并查询二级域名baidu.com.的 NS 服务器。
- 从baidu.com.的NS服务器(f.gtld-servers.net)查询百度的CNAME记录。www.a.shifen.com
|