文章目录
- DNS域名解析协议
- 一、DNS系统的作用
- 1、DNS的定义
- 2、DNS域名解析
- 2.1 正向解析
- 2.2 反向解析
- 3、DNS域名结构
- 二、DNS服务器类型
- 1、主域名服务器
- 2、从域名服务器
- 3、缓存域名服务器
- 4、权威dns服务器
- 三、DNS查询类型及原理
- 1、查询方式
- 1.1 递归查询
- 1.2 迭代查询
- 2、DNS查询原理过程
- 2.1 正向解析查询过程
- 2.2 一次dns解析过程
- 四、正向解析
- 1、数据库文件格式
- 1.1 记录类型
- 1.2 字段:描述了这列数据的作用
- 2、内网搭建dns服务器
- 2.1 命令格式
- 2.2 内网搭建dns服务器(图文详解)
- 五、主从复制
- 1、配置环境
- 1.1 命令格式
- 1.2 主从复制命令(图文详解)
DNS域名解析协议
一、DNS系统的作用
1、DNS的定义
- 将域名转化成ip地址,实现访问域名等于访问ip地址(域名方便记忆,访问内网,如:www.baidu.com)
- 一个dns服务器只管自己范围内的解析
2、DNS域名解析
2.1 正向解析
- 根据域名查找对应的IP地址
2.2 反向解析
- 根据IP地址查找对应的域名
在日常生活中人们习惯使用域名访问服务器,但机器间互相只认IP地址,域名与IP地址之间是多对一的关系,一个ip地址不一定只对应一个域名,且一一个完整域名只可以对应一个ip地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的。
3、DNS域名结构
www.baidu.com
- . 根域
- .com 顶级域,一级域
- .baidu 二级域
- www 主机名
- 根的dns服务器只能解析:主机名+根域
- 一级域的dns服务器只能解析:主机名+一级域+根域
- 二级域的dns服务器只能解析:主机名+二级域+一级域+根域
二、DNS服务器类型
1、主域名服务器
- 管理和维护所负责解析的域内解析库的服务器
2、从域名服务器
-
从主服务器或从服务器"复制"(区域传输)解析库副本
序列号:解析库版本号,主服务器解析库变化时,其序列递增
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
过期时长:从服务器联系不到主服务器时,多久后停止服务
通知机制:主服务器解析库发生变化时,会主动通知从服务器
3、缓存域名服务器
- 只提供域名解析结果的缓存功能,目的在于提高查询速度和效率, 但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定其他 DNS 服务器作为解析来源
4、权威dns服务器
- 最后解析成功的服务器为权威服务器
三、DNS查询类型及原理
1、查询方式
1.1 递归查询
一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后, 若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自己动手)
1.2 迭代查询
一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次查询。(需要自己动手)
总结:递归和迭代都可以得到结果
- 递归:询问一次
- 迭代:询问多次
2、DNS查询原理过程
2.1 正向解析查询过程
-
先查本机的缓存记录
-
查询hosts文件
-
查询dns域名服务器,交给dns域名服务器处理
以上过程成为递归查询:我要一个答案你直接会给我结果
-
这个dns服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进行下一步
求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域服务器
求助顶级域服务器,顶级域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器
求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器
本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端
2.2 一次dns解析过程
以访问www.baidu.com服务器为例:
-
先看本机的 /etc/hosts文件,如果有直接访问,如果没有就去找你设置的缓存dns服务器
-
如果缓存dns服务器有,直接反馈结果(递归),如果没有就需要迭代查询,直接去找根域服务
-
由于根域服务器只能解析根,无法解析www.baidu.com,但是根域服务器让你去找一级域服务器
-
一级域发现自己解析不了,让你去找二级域
-
二级域发现这台服务器在自己的管理范围内,直接反馈结果给缓存服务器
-
缓存服务器再转交给客户
四、正向解析
1、数据库文件格式
1.1 记录类型
-
A:正向解析,将域名地址翻译成ip地址
-
PTR(PoinTeR):反向解析,ip地址解析成域名
-
NS:域名服务器
-
SOA:初始记录,确定谁是主,dns服务器主从之间的一些设置
-
PTR:反向解析,ip地址解析为域名地址
-
CNAME:别名记录
1.2 字段:描述了这列数据的作用
- ttl:生命周期
- @:域名
- IN:internet协议
- SOA:指明记录类型,主从架构
- master:定义了谁是dns服务器
- rname.invalid.:邮箱
2、内网搭建dns服务器
-
软件名:bind(安装包的名字)
-
服务名:named(程序的名字)
-
dns:
使用53tcp(主服务与从服务器之间传递消息)
53udp(解析地址)
-
安装完软件之后,要找到以下文件
- 配合文件的位置:rpm -qc 安装包的名字
- 主程序的位置:rpm -ql 安装包的名字
2.1 命令格式
yum install bind bind-utils -y #安装bind软件
vim /etc/named.conf #编辑配置文件,修改权限和监听地址
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
#将13、21两行监听地址和允许地址里面的内容修改为any或前面添加//注释掉,释放权限
vim /etc/named.rfc1912.zones #编辑配置文件(编辑域名)
zone "yyqx.com" {
type master;
file "yyqx.com.zone";
};
#第一行表示的是域名
#第二行表示指定服务为主服务器
#第三行表示的是数据库名字/var/named/yyqx.com.zone
cd /var/named/ #切换目录
cp -a named.localhost yyqx.com.zone #保留权限复制
vim yyqx.com.zone #编辑数据库文件,解析记录对应关系
$TTL 1D
@ IN SOA master rname.invalid (
0 ; serial #更新序列号,可以是10位以内的整数(数字只能往大调)
1D ; refresh #刷新时间,重新下载地址数据的间隔
1H ; retry #重试延时,下载失败后的重试间隔
1W ; expire #失效时间,超过该时间仍无法下载则放弃#
3H ) ; minimum #无效解析记录的生存周期
NS master #记录当前区域的DNS服务器的名称
master A 192.168.10.11
www A 192.168.10.20
ftp A 192.168.10.30
systemctl start named #开启服务
vim /etc/sysconfig/network-scripts/ifcfg-ens33 #编辑配置文件
DNS1=192.168.10.11 #将dns地址改为192.168.10.11
netstat -ntap |grep 53 #查看named进程
systemctl restart network #重启网卡
systemctl restart named #重启服务
host www.yyqx.com #查看dns域名解析配置
host master.yyqx.com #查看dns域名解析配置
相关命令:
cat yyqx.com.zone #查看数据库文件
rpm -qc bind #查看bind配置文件
/etc/named.conf #主配置文件
rndc reload #重新加载DNS服务
named-checkconf 文件名 #检查文件配置格式(如:named-checkconf /etc/named.conf,不报错就没有问题)
named-checkzone 域名 数据库文件 #检查数据库文件配置(如:named-checkzone yyqx.com /var/named/yyqx.com.zone,不报错就没有问题)
2.2 内网搭建dns服务器(图文详解)
五、主从复制
1、配置环境
- 主服务器地址:192.168.10.11
- 从服务器地址:192.168.10.12
1.1 命令格式
##配置之前都要关闭防火墙和中心防护
##主服务器的配置
yum install bind bind-utils -y #安装bind软件
vim /etc/named.conf #编辑配置文件,修改权限和监听地址
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
#将13、21两行监听地址和允许地址里面的内容修改为any或前面添加//注释掉,释放权限
vim /etc/named.rfc1912.zones #编辑配置文件(编辑域名)
zone "yyqx.com" {
type master;
file "yyqx.com.zone";
};
#第一行表示的是域名
#第二行表示指定服务为主服务器
#第三行表示的是数据库名字/var/named/yyqx.com.zone
cd /var/named/ #切换目录
cp -a named.localhost yyqx.com.zone #保留权限复制
vim yyqx.com.zone #编辑数据库文件,解析记录对应关系
$TTL 1D
@ IN SOA master rname.invalid (
0 ; serial #更新序列号,可以是10位以内的整数(数字只能往大调)
1D ; refresh #刷新时间,重新下载地址数据的间隔
1H ; retry #重试延时,下载失败后的重试间隔
1W ; expire #失效时间,超过该时间仍无法下载则放弃#
3H ) ; minimum #无效解析记录的生存周期
NS master #记录当前区域的DNS服务器的名称
master A 192.168.10.11
www A 192.168.10.20
ftp A 192.168.10.30
systemctl start named #开启服务
vim /etc/sysconfig/network-scripts/ifcfg-ens33 #编辑配置文件
DNS1=192.168.10.11 #将dns1地址改为192.168.10.11
DNS2=192.168.10.12 #将dns2地址改为192.168.10.12
systemctl restart network #重启网卡
cat /etc/resolv.conf #查看修改的dns地址是否生效
host www.yyqx.com #查看dns域名解析配置
dig www.yyqx.com #查看dns域名解析配置(dig命令查看的更全面,可以看到由哪个dns地址解析)
##从服务器的配置
yum install bind bind-utils -y #从服务器安装bind软件
vim /etc/sysconfig/network-scripts/ifcfg-ens33 #编辑配置文件
DNS1=192.168.10.11 #将dns1地址改为192.168.10.11
DNS2=192.168.10.12 #将dns2地址改为192.168.10.12
systemctl restart network #重启网卡
cat /etc/resolv.conf #查看修改的dns地址是否生效
vim /etc/named.conf #编辑配置文件,修改权限和监听地址
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
#将13、21两行监听地址和允许地址里面的内容修改为any或前面添加//注释掉,释放权限
vim /etc/named.rfc1912.zones #编辑配置文件(编辑域名)
zone "yyqx.com" {
type slave;
file "slave/yyqx.com.zone";
master { 192.168.10.11; }
};
#第一行表示的是域名
#第二行表示指定服务为从服务器
#第三行表示的是数据库名字/var/named/slaves/yyqx.com.zone
#第三行表示指定主服务器为192.168.10.11
systemctl start named #开启服务
ll /var/named/slaves #查看从配置文件
dig www.yyqx.com #查看dns域名解析配置(可以看到由哪个dns地址解析)
##验证
systemctl stop named #关闭主服务器的named
dig www.yyqx.com #查看dns域名解析(使用从服务器的dns地址解析)
1.2 主从复制命令(图文详解)
- 主服务器配置
- 从服务器配置
- 验证