介绍
DNS的作用:根据域名查出IP地址,也可以将IP地址转换成相应的域名地址
域名的层级结构
ebox.wlhiot.com.root
# 主机名.次级域名.顶级域名.根域名
# 默认根域名是省略的,但不代表它不存在
根域名服务器
DNS服务器根据域名的层级,进行分级查询。每一级域名都有自己的NS记录,NS记录指向该级域名的域名服务器。这些服务器知道下一级域名的各种记录。
所谓分级查询,就是从根域名开始,依次查询每一级域名的NS记录,直到查到最终的IP地址,大致过程如下:
- 从"根域名服务器"查到"顶级域名服务器"的NS记录和A记录(IP地址)
- 从"顶级域名服务器"查到"次级域名服务器"的NS记录和A记录(IP地址)
- 从"次级域名服务器"查出"主机名"的IP地址
域名解析过程
理论上来说所有域名查询都应该先查询根域名,因为只有根域名保存所有域名的信息。但实际情况是大部分DNS服务商都提供有根域名的缓存,所以查询频率不会那么频繁,直接从DNS服务商中即可查询。
域名解析总体流程大概如下:
- 输入域名后,服务器先查找自己主机对应的域名服务器(/etc/resolv.conf),域名服务器从自己的数据库中查找数据;
- 如果没有,向上级域名服务器进行查找,依次类推,直到查找到根域名服务器;
- 根域名服务器提供本地域名服务器下一次要查询的顶级域名服务器NS记录和A记录,本地域名服务器去查找,依次类推,直到查找到包含该域名的域名服务器;
- 包含该域名的域名服务器向本地域名服务器提供所查询的主机的IP地址;
- 本地域名服务器将查询结果告知主机进行访问;
- 本地域名服务器将本地查询结果缓存到本地,提高下一次查找过程;
DNS服务器搭建
DNS工具
nslookup
$ nslookup fuser.wlhiot.com # 命令格式:nslookup [-option] [name | -] [server]
Server: 192.168.254.8
Address: 192.168.254.8#53 # 本地出口DNS服务器及端口
Non-authoritative answer:
Name: fuser.wlhiot.com
Address: 36.133.154.254 # 该域名解析到的IP地址
nslookup (全称 name server lookup)是一个网络工具,直接输入nslookup可进入交互模式,若需要单次查找可在nslookup命令后面跟上要查询的域名或者IP地址。
资源记录(RR——Resource Records)是包含了下列字段的4元组:(Name, Value, Type, TTL:缓存时间,数值越小,修改记录各地生效时间越快,默认为10分钟)
- 主机记录(A记录),是用于名称解析的重要记录,提供标准的主机名到IP的地址映射(可实现域名指向IP地址)
- 别名记录(CNAME记录),向查询的主机提供主机名对应的规范主机名(实现域名指向另一个域名,然后另一个域名提供IP地址)
- 域名服务器记录(NS记录),用于指定该域名由哪个DNS服务器进行解析
- 邮件交换记录(MX记录),返回别名为Name对应的邮件服务器的规范主机名
例如,当有人发邮件给"daihaorui@wlhiot.com"时,系统将对"wlhiot.com"进行DNS中的MX记录解析。如果MX记录存在,系统就根据MX记录的优先级,将邮件转发到与该MX相应的邮件服务器上
dig
$ dig -t [A/CNAME/NS] [域名] @[DNS服务器]
$ dig -t A ebox.wlhiot.com @10.20.0.69 # 可以指定DNS服务器解析指定记录
$ dig ebox.wlhiot.com # 常用命令; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> ebox.wlhiot.com
;; global options: +cmd # 查询参数和统计
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60667
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 27
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION: # 查询内容
;ebox.wlhiot.com. IN A
;; ANSWER SECTION: # DNS服务器的答复
ebox.wlhiot.com. 600 IN A 36.138.100.11
;; AUTHORITY SECTION: # NS(Name Server)记录,哪些服务器负责ebox.wlhiot.com的DNS记录
com. 479 IN NS g.gtld-servers.net.
com. 479 IN NS b.gtld-servers.net.
;; ADDITIONAL SECTION: # 各域名服务器的IP地址,与NS记录一并返回的
c.gtld-servers.net. 479 IN A 192.26.92.30
a.gtld-servers.net. 479 IN AAAA 2001:503:a83e::2:30
;; Query time: 40 msec # DNS服务器的一些传输信息
;; SERVER: 192.168.254.8#53(192.168.254.8)
;; WHEN: Wed Feb 09 11:15:48 CST 2022
;; MSG SIZE rcvd: 856
参考链接: