粗谈Linux DNS

本文深入介绍了DNS(域名系统)的工作原理,包括域名的层级结构、DNS记录类型如CNAME、A、NS和PRT,以及如何使用工具如nslookup和dig进行DNS查询。通过DNS,域名与IP地址得以映射,实现服务发现和负载均衡。文章还展示了dig命令的使用,演示了从根域名到具体域名的解析过程。
摘要由CSDN通过智能技术生成

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的输出,主要包括四部分。

  1. 从114.114.114.114查到的一些根域名服务(.)的NS记录。
  2. 从NS记录结果中选一个(b.root-servers.net),并查询顶级域名com.的NS记录。
  3. 从com.的NS记录中选择一个(f.gtld-servers.net),并查询二级域名baidu.com.的 NS 服务器。
  4. 从baidu.com.的NS服务器(f.gtld-servers.net)查询百度的CNAME记录。www.a.shifen.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值