dns解析?瞅瞅这篇文章

dns( Domain Name System),顾名思义,就是用来将主机名和域名转换为IP地址的系统,那么dns是怎么运作的呢,本文简单记录下龙叔的理解

推荐我的公众号:龙叔18岁

1·研究环境

为了研究dns,当然要自己搭建一个dns服务器去做模拟实验了,我这里准备了三个服务器做实验。

192.168.30.135作为正常的服务器,192.168.30.128,192.168.30.133用bind搭建成dns服务器,搭建步骤如下:

1·安装:yum install bind

2·修改/etc/named.conf 文件,对下面几个配置做修改:

listen-on port 53 { any; };【表示服务器上所有ip地址都可提供dns域名解析】

allow-query     { any; };【表示允许所有人对本服务发送dns查询的请求】

dnssec-validation no;【表示当我们查询dns时系统不做检测】

3·修改/etc/named.rfc1912.zones文件,新增一个zone,

zone "wxl" IN {
        type master;
        file "wxl.zone";
        allow-update { none; };
};
访问上级域名wxl.com的时候,去找wxl.com.zone文件,zone文件都放在/var/named目录下面

4·在/var/named目录下新增wxl.zone文件,可以复制源有文件,然后修改,wxl.com.zone文件内容如下:

$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
wxl135  A       192.168.30.135
wxldns  A       192.168.30.128
wxl133  A       192.168.30.133

5·重启named服务:systemctl restart named

6·修改的192.168.30.133主机的/etc/resolv.conf文件,将其dns服务器改为192.168.30.128

# Generated by NetworkManager
search localdomain
nameserver 192.168.30.128

这个时候在192.168.30.135主机上nslookup wxl135,就会发现解析出来的IP 就是wxl.zone文件中配置的192.168.30.135了,dns服务器也看到是192.168.30.128了

 

2·知识点

2.1·域名解析类型

2.1.1·A记录

最简单的域名解析,就是将域名解析到你的服务的IP上

下面这种就是A记录

wxl.zone文件内容

dig命令可以看到是A记录

2.1.2·CNAME记录

别名指向解析;,可以将注册的不同域名转到主域名上,与A记录解析不同的是,CNAME记录设置的是域名而不是ip地址。

如果需要将域名指向另一个域名,再由另一个域名提供 ip 地址,就需要添加 CNAME 记录。

在wxl.zone文件中加入下面CNAME记录

dig也可以看到xxx.wxl.com CNAME 解析到了wxl.a.wxl.com,然后wxl.a.wxl.com A记录 解析到了192.168.30.135和127.0.0.1

nslookup也可以看到CNAME解析过程

我们熟悉的百度域名其实也是一样,做了CNAME记录

2.1.3·NS记录

name server,顾名思义,就是域名服务器记录,指定域名由哪个DNS服务器进行解析。注册域名时,总有默认的DNS服务器,每个注册的域名都是由一组DNS域名服务器来解析的。

如果需要把子域名交给其他 DNS 服务器解析,就需要添加 NS 记录。

例如192.168.30.128作为父dns服务器,192.168.30.133作为子域名服务器,做子域授权

192.168.30.128【主dns服务器】wxl.zone文件如下,将dragon域内的解析工作交给192.168.30.133

192.168.30.133【子dns服务器】dragon.wxl.zone文件如下

在192.168.30.135(配置的dns服务器是192.168.30.128)上就可以正常解析出来在192.168.30.133上配置的子域名解析了

 

2.1.4·AAAA记录

和A记录类似,只不过获取的是IPv6的地址。

2.1.5·MX记录

邮件交换记录,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。这里不多讲

 

2.2·域名结构

域名是有层次的,以“.”分割

 

2.3·域名服务器

根域名服务器:最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助根域名服务器。

顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名。

权限域名服务器:负责一个“区”的域名服务器。

本地域名服务器:当一个主机发出dns查询时,就会发送给本地域名服务器。

一个服务器所负责管辖(或有权限)的范围叫做区(zone)。DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位。区是DNS服务器实际管辖的范围。区 <= 域。

图a表示域abc.com只设一个区abc.com。这时,区abc.com和域abc.com指的是同一件事。

图b表示域abc.com划分为两个区:abc.com和y.abc.com。这两个区都隶属于域abc.com,都各设置了相应的权限域名服务器。不难看出,区是域的子集。

 

 

2.4·递归查询与迭代查询

(1)递归查询:本机向本地域名服务器发出一次查询请求,就静待最终的结果。如果本地域名服务器无法解析,自己会以DNS客户机的身份向其它域名服务器查询,直到得到最终的IP地址告诉本机
(2)迭代查询:本地域名服务器向根域名服务器查询,根域名服务器告诉它下一步到哪里去查询,然后它再去查,每次它都是以客户机的身份去各个服务器查询。

 

2.5·缓存

简单来说,一条域名的DNS记录会在本地有两种缓存:浏览器缓存和操作系统(OS)缓存。在浏览器中访问的时候,会优先访问浏览器缓存,

如果未命中则访问OS缓存,最后再访问DNS服务器(一般是ISP提供),然后DNS服务器会递归式的查找域名记录,然后返回。

DNS记录会有一个ttl值(time to live),单位是秒,意思是这个记录最大有效期是多少。经过实验,OS缓存会参考ttl值,但是不完全等于ttl值,

而浏览器DNS缓存的时间跟ttl值无关,每种浏览器都使用一个固定值。

 

推荐公众号:龙叔18岁

 

 

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙叔运维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值