DNS基础及域名系统架构

本文详细介绍了DNS的工作原理,包括域名解析过程、查询方式、资源记录、DNS服务器类型等核心内容。同时,展示了如何使用DNS专用查询命令进行操作,并提供了高级查询技巧,如递归查询、循环查询、混合查询等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先拿csdn说事儿吧
www.youkuaiyun.com
↓ ↓ ↓
主 域 类
机 名 型

类型:标识此域名的类型(com、net、org、edu、gov等)
域名:域名称
主机名:该域中某台主机的名称
注释:
① 表示youkuaiyun.com这个域里面的www这台网页服务器
② 对大小写透明,比如Www.youkuaiyun.com,亦同
③ 完整的域名实际上在末端还有个".",也就是,www.youkuaiyun.com.,"."代表root DNS server

域名是面向用户的,而计算机底层仍然是依赖IP通信



日常主机(个人PC等)一般都是作为DNS客户端使用
浏览器等通过调用OS底层提供的gethostbyname()发起对DNS服务器的查询
进而实施域名解析

域名解析方式


① /etc/hosts
② DNS
③ NIS
注释:
⒈ hosts文件优先级较高,OS一般会优先访问hosts
比如:
[root@even ~]# cat /etc/hosts
127.0.0.1 even.example.com even
117.79.93.222 www.youkuaiyun.com
不过,这个hosts文件常会被一些黑客拿去“钓鱼攻击”
将中国农业银行的IP解析到黑客所设置的另外一个钓鱼网
不知不觉你的用户名和密码就被socket

⒉ 二把手的当属DNS,在resolv.conf有它的配置
[root@even ~]# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search example.com ##域名服务器的域名
nameserver 192.168.227.2 ##域名服务器对应的IP地址
在client端,DNS服务器的相关信息就保存在文件/etc/resolv.conf中
每当client向server问一个域名,而server端必须要回答此域名的真正IP地址
当地的DNS先会查自己的资料DNS服务器库。如果自己的资料库没有,则会往该DNS的上级的DNS询问
依此得到答案之后,将收到的答案存起来,并回答客户
DNS服务器会根据不同的授权区(Zone),记录所属该网域下的各名称资料,这个资料包括网域下的次网域名称及主机名称


⒊ 但是我们可以通过/etc/nsswitch.conf改变查询优先级
[root@even ~]# cat /etc/nsswitch.conf
hosts: files dns
这里的files就是指/etc/hosts这个文件
如果我们想改变这个顺序:
要么把files这个关键字删掉
要么把files和dns掉个序

DNS专用查询命令


① 简单型:host
─→host www.youkuaiyun.com
② 复杂型:dig
─→dig www.youkuaiyun.com
这两个都不会使用/etc/nsswitch.conf的配置
只会通过/etc/resolv.conf进行DNS查询


[root@even ~]# dig +trace www.youkuaiyun.com

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5 <<>> +trace www.youkuaiyun.com
;; global options:  printcmd
.                       371171  IN      NS      d.root-servers.net.
.                       371171  IN      NS      k.root-servers.net.
.                       371171  IN      NS      m.root-servers.net.
.                       371171  IN      NS      e.root-servers.net.
.                       371171  IN      NS      i.root-servers.net.
.                       371171  IN      NS      f.root-servers.net.
.                       371171  IN      NS      a.root-servers.net.
.                       371171  IN      NS      b.root-servers.net.
.                       371171  IN      NS      c.root-servers.net.
.                       371171  IN      NS      h.root-servers.net.
.                       371171  IN      NS      g.root-servers.net.
.                       371171  IN      NS      l.root-servers.net.
.                       371171  IN      NS      j.root-servers.net.
;; Received 512 bytes from 192.168.1.1#53(192.168.1.1) in 87 ms

net.                    172800  IN      NS      k.gtld-servers.net.
net.                    172800  IN      NS      g.gtld-servers.net.
net.                    172800  IN      NS      j.gtld-servers.net.
net.                    172800  IN      NS      m.gtld-servers.net.
net.                    172800  IN      NS      i.gtld-servers.net.
net.                    172800  IN      NS      f.gtld-servers.net.
net.                    172800  IN      NS      e.gtld-servers.net.
net.                    172800  IN      NS      h.gtld-servers.net.
net.                    172800  IN      NS      d.gtld-servers.net.
net.                    172800  IN      NS      l.gtld-servers.net.
net.                    172800  IN      NS      a.gtld-servers.net.
net.                    172800  IN      NS      c.gtld-servers.net.
net.                    172800  IN      NS      b.gtld-servers.net.
;; Received 487 bytes from 128.8.10.90#53(d.root-servers.net) in 348 ms

youkuaiyun.com.               172800  IN      NS      ns1.dnsv2.com.
youkuaiyun.com.               172800  IN      NS      ns2.dnsv2.com.
;; Received 171 bytes from 192.42.93.30#53(g.gtld-servers.net) in 236 ms

www.youkuaiyun.com.           600     IN      A       117.79.93.222
youkuaiyun.com.               600     IN      NS      ns1.dnsv2.com.
youkuaiyun.com.               600     IN      NS      ns2.dnsv2.com.
;; Received 100 bytes from 221.204.186.8#53(ns1.dnsv2.com) in 195 ms


注释:
① 由上可知:
"." → "net." → "youkuaiyun.com." → "www.youkuaiyun.com."
② "youkuaiyun.com."这个域名服务器通常由企业自行维护或者个人租用运营商
可由我们自由控制在这个域名下有哪些主机信息
我们可以自行搭建这样一台DNS服务器


DNS查询类型


① 递归查询


② 循环查询


③ 混合查询


资源记录


在DNS服务器上,DNS的信息通过资源记录(RR,Resource Record)的格式进行保存
RR不仅能够保存域名到IP的映射信息,还能够保存很多其他信息
RR常用属性:
● name :域名、主机名,如www,mail
● class :资源类别,一般都是IN,代表Internet
● type :资源类型,常见如下:
▼ IN A → IPV4地址:用于设置主机名对应IP地址的对应记录
▼ IN AAAA → IPV6地址
▼ IN MX → 邮件记录:用于提供邮件服务器名称
▼ IN CNAME → 别名:用于在区域文件中对主机名称设置别名
▼ IN PTR → 指针(逆向解析):语法(IP地址INPTR主机名)
▼ IN SRV → 服务资源

▼ IN NS
● rdata :record data
比如:
www INA 192.168.1.1
↓↓↓ ↓
name class
type rdata



DNS服务器类型


Master:保存该域的zone配置文件,该域的所有配置、更改都在该服务器上进行
Slave: 抓取Master的zone配置文件,但没有权限修改zone配置文件,可作为负载均衡使用
Cache: 不存在任何zone配置文件,仅依靠缓存为客户端提供服务,通常作负载均衡和加速访问使用,比如在大的局域网出口就可以架设cache DNS server
可见、无论Slave或cache、都是依靠缓存Master的zone配置文件


Zone配置文件


在DNS服务器中,一般一个域通过一个zone文件保存该域的相关信息
zone文件格式是标准化的


注释:
① "NS @"之上的代码无须我们去管理,有标准的模块可供参考

▼ serial:序列号,如果DNS配置文件修改一次,则序列号加一,从而通知下级或从服务器去刷新配置文件,因为,序列号不一致
▼ refresh:刷新时间,1D:一天,也就是从服务器一天刷新一次
▼ retry:如果刷新不成功,多长时间重试
▼ expire:多长时间缓存信息过期
以上这些信息是用来规定主从服务器之间信息的同步
一般使用默认即可,可能需要修改的仅是serial


高级查询


● dig -t mx www.youkuaiyun.com
案例:查询gmail的邮件服务器

[root@even ~]# dig -t mx gmail.com

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5 <<>> -t mx gmail.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64810
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 4, ADDITIONAL: 8

;; QUESTION SECTION:
;gmail.com.                     IN      MX

;; ANSWER SECTION:
gmail.com.              949     IN      MX      10 alt1.gmail-smtp-in.l.google.com.
gmail.com.              949     IN      MX      20 alt2.gmail-smtp-in.l.google.com.
gmail.com.              949     IN      MX      30 alt3.gmail-smtp-in.l.google.com.
gmail.com.              949     IN      MX      40 alt4.gmail-smtp-in.l.google.com.
gmail.com.              949     IN      MX      5 gmail-smtp-in.l.google.com.

;; AUTHORITY SECTION:
gmail.com.              186940  IN      NS      ns2.google.com.
gmail.com.              186940  IN      NS      ns3.google.com.
gmail.com.              186940  IN      NS      ns1.google.com.
gmail.com.              186940  IN      NS      ns4.google.com.

;; ADDITIONAL SECTION:
alt1.gmail-smtp-in.l.google.com. 244 IN AAAA    2a00:1450:4010:c04::1b
alt2.gmail-smtp-in.l.google.com. 244 IN AAAA    2607:f8b0:4002:c04::1a
alt3.gmail-smtp-in.l.google.com. 244 IN AAAA    2607:f8b0:400d:c00::1b
alt4.gmail-smtp-in.l.google.com. 244 IN AAAA    2607:f8b0:400c:c02::1b
ns1.google.com.         184158  IN      A       216.239.32.10
ns2.google.com.         189126  IN      A       216.239.34.10
ns3.google.com.         186984  IN      A       216.239.36.10
ns4.google.com.         192641  IN      A       216.239.38.10

;; Query time: 28 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Tue Nov 27 00:26:40 2012
;; MSG SIZE  rcvd: 398

MX后面的数字表示优先级
● dig -x 逆向解析
● dig -t soa 查询zone配置文件里面"NS @"之上的信息
案例:查询youkuaiyun.com这个域的soa信息

[root@even ~]# dig -t soa youkuaiyun.com

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5 <<>> -t soa youkuaiyun.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5007
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 6

;; QUESTION SECTION:
;youkuaiyun.com.                      IN      SOA

;; ANSWER SECTION:
youkuaiyun.com.               570     IN      SOA     ns1.dnsv2.com. level3dnsadmin.dnspod.com. 1353658206 3600 180 1209600 180

;; AUTHORITY SECTION:
youkuaiyun.com.               320     IN      NS      ns1.dnsv2.com.
youkuaiyun.com.               320     IN      NS      ns2.dnsv2.com.

;; ADDITIONAL SECTION:
ns1.dnsv2.com.          14141   IN      A       122.225.217.193
ns1.dnsv2.com.          14141   IN      A       183.60.59.230
ns1.dnsv2.com.          14141   IN      A       221.204.186.8
ns2.dnsv2.com.          14141   IN      A       180.153.162.151
ns2.dnsv2.com.          14141   IN      A       112.90.143.34
ns2.dnsv2.com.          14141   IN      A       119.167.195.7

;; Query time: 27 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Tue Nov 27 00:31:54 2012
;; MSG SIZE  rcvd: 225


倘若大家在调试DNS连通性的时候,可以借助google提供的全球免费的DNS免费服务器:8.8.8.8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值