目录
DNS域名解析服务
DNS系统的作用
■正向解析:根据域名查找对应的IP地址
■反向解析:根据IP地址查找对应的域
DNS系统的分布式数据结构
DNS系统类型
■缓存域名服务器
●也称为DNS高速缓存服务器
●通过向其他域名服务器查询获得域名-> IP地址记录
●将域名查询结果缓存到本地,提高重复查询时的速度
■主域名服务器
●特定DNS区域的权威服务器,具有唯一性
●负责维护该区域内所有域名->IP地址的映射记录
●需要自行建立所负责区域的地址数据文件
■从域名服务器
●也称为辅助域名服务器,是对主域名服务器的热备份
●其维护的域名->IP地址记录来源于主域名服务器
●需要从主域名服务器自动同步区域地址数据库
DNS服务器类型
●缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,
但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定
其他DNS服务器作为解析来源。
●主域名服务器: 管理和维护所负责解析的域内解析库的服务器
●从域名服务器
从主服务器或从服务器”复制”(区域传输)解析库副本
序列号:解析库版本号,主服务器解析库变化时,其序列递增
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
过期时长:从服务器联系不到主服务器时,多久后停止服务
通知机制:主服务器解析库发生变化时,会主动通知从服务器
IPv4的根名称服务器:全球共13个负责解析根域的DNS服务器,美国10个,英国1,瑞典1,日本1
IPv6的根名称服务器:全球共25个,中国1主3从,美国1主2从
DNS查询类型及原理
查询方式
●递归查询:一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自己动手)
●迭代查询:一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回权威的结果,则它会向下一-个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的结果为止。此查询的源不变但查询的目标不断变化,为查询结果一般需要发起多次查询。(需要自己动手)
查询原理过程
正向解析查询过程:
①先查本机的缓存记录
②查询hosts文件
③查询dns域名服务器,交给dns域名服务器处理
以上过程成为递归查询:我要一个答案你直接会给我结果
④这个dns服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进行下一步
⑤求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域服务器
⑥求助顶级域服务器,顶级域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器
⑦求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器
⑧本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端
windows系统查询dns缓存命令: ipconfig /displaydns
windows系统清理dns缓存命令: ipconfig /flushdns
linux清dns缓存需要安装nscd软件,启动、执行nscd -i hosts
正向解析
各种资源记录
区域解析库:由众多资源记录RR(Resource Record)组成
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解
析库的第一条记录SOA,是起始授权机构记录,说明了在众多 NS 记录里哪一台才是主要的服务器。在任何DNS记录文件中,都是以SOA ( Startof Authority )记录开始。SOA资源记录表明此DNS名称服务器是该DNS域中数据信息的最佳来源。
A(internet Address):作用,域名解析成IP地址
AAAA(FQDN): --> IPV6
PTR(PoinTeR):反向解析,ip地址解析成域名
NS(Name Server):,专用于标明当前区域的DNS服务器,服务器类型为域名服务器
CNAME : Canonical Name,别名记录
MX(Mail eXchanger)邮件交换器
TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮
件)记录,https验证等
SOA记录与NS记录的区别:NS记录表示域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析;SOA记录设置一些数据版本和更新以及过期时间等信息。
安装配置方法
[root@localhost ~]#yum install bind bind-utils -y
#主软件 和 配置包管理软件
[root@localhost ~]#systemctl stop firewalld.service
[root@localhost ~]#setenforce 0
[root@localhost ~]#systemctl start named
#开启服务
[root@localhost ~]#netstat -ntap |grep named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 17047/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 17047/named
tcp6 0 0 ::1:53 :::* LISTEN 17047/named
tcp6 0 0 ::1:953 :::* LISTEN 17047/named
[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1=127.0.0.1
[root@localhost ~]#systemctl restart network
[root@localhost ~]#ping www.baidu.com
[root@localhost ~]#rpm -qc bind
#配置文件包
/etc/logrotate.d/named
/etc/named.conf
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback
[root@localhost ~]#vim /etc/named.conf
#可以修改配置,注释,或者删除这两行
listen-on port 53 { any; };
allow-query { any; };
# // listen-on port 53 { 127.0.0.1; };
# // allow-query { localhost; };
[root@localhost ~]#rndc reload
#重新加载DNS服务
server reload successful
[root@localhost named]#vim /etc/named.rfc1912.zones
#编写域名
zone "kgc.com" {
type master;
file "kgc.com.zone";
};
[root@localhost named]#cd /var/named/
#切换目录
[root@localhost named]#ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]#cp named.localhost ./kgc.com.zone -p
#保留权限复制
[root@localhost named]#ls
data dynamic kgc.com.zone named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]#vim kgc.com.zone
#编辑数据库文件,解析记录对应关系
$TTL 1D
@ IN SOA master.kgc.com. admin.kgc.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.91.100
www A 192.168.91.101
db A 192.168.91.103
IN MX 10 mail.kgc.com.
mail A 192.168.91.10
@ A 192.168.91.100
[root@kgc ~]# cd /var/www/html/
[root@kgc html]# ls
[root@kgc html]# vim index.html
www.kgc.com
#检查启动文件格式
named-checkconf
named-checkzone kgc.com /var/named/kgc.com.zone
反向解析
[root@localhost named]#vim /etc/named.rfc1912.zones
#先修改区域配置文件
zone "91.168.192.in-addr.arpa" IN {
type master;
file "ky15.com.zone";
allow-update { none; };
};
[root@localhost named]#cp -p kgc.com.zone ky15.com.zone
#复制正向解析文件
[root@localhost named]#chmod 640 ky15.com.zone ;chgrp named ky15.com.zone
[root@localhost named]#vim ky15.com.zone
#编辑文件
TTL 1D
@ IN SOA master.yun.com. admin.yun.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master.yun.com.
master A 192.168.91.100
100 IN PTR www.yun.com.
88 IN PTR ftp.yun.com.
主从复制
实验环境:
主服务器地址:192.168.91.100
从服务器地址:192.168.91.103
###从服务器的配置
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install bind bind-utils.x86_64 -y
#从服务器先安装bind软件
[root@localhost etc]# vim /etc/named.conf
#两段改成any
listen-on port 53 { any; };
allow-query { any; };
[root@localhost etc]# vim /etc/named.rfc1912.zones
#添加从服务器的配置文件
zone "kgc.com" IN {
type slave;
#类型从
file "slaves/kgc.com.zone";
#文件地址在/var/named/slaves/ 下
masters { 192.168.91.100; };
#申明主服务器的地址
};
[root@localhost etc]# ls /var/named/slaves
kgc.com.zone
[root@localhost etc]# systemctl start named
#主服务器配置好后再启动
#主服务器配置
[root@localhost etc]# vim /etc/named.rfc1912.zones
zone "kgc.com" IN {
type master;
file "kgc.com.zone";
allow-transfer { 192.168.91.103; };
#添加从服务器的地址
};
[root@localhost etc]#rndc reload
验证:
#在从服务器上
[root@localhost etc]# echo "nameserver 192.168.91.103" > /etc/resolv.conf
#将DNS指向自己
[root@localhost etc]#host www.kgc.com
#或者
[root@localhost ~]# dig www.kgc.com @192.168.91.101
分离解析
实验环境:
将linux服务器配置两块网卡,都仅主机模式
ens33:192.168.100.1
ens37:12.0.0.1
win7做为外网: 12.0.0.12 255.0.0.0
win10 作为内网:192.168.100.100
[root@test5 ~]# vim /etc/named.conf
#修改配置文件
listen-on port 53 { any; };
allow-query { any; };
#等会需要使用的 根配置文件
zone "." IN {
type hint;
file "named.ca";
};
[root@test5 named]# vim /etc/named.rfc1912.zones
#编写配置文件
view "lan" {
match-clients { 192.168.100.0/24; };
#匹配网段
zone "kgc.com" IN {
type master;
file "kgc.com.lan";
};
zone "." IN {
type hint;
file "named.ca";
};
};
view "wan" {
match-clients { 12.0.0.0/24; };
zone "kgc.com" IN {
type master;
file "kgc.com.wan";
};
zone "." IN {
type hint;
file "named.ca";
};
};
[root@test5 named]# vim kgc.com.lan
$TTL 1D
@ IN SOA master.kgc.com. admin.kgc.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.100.1
www A 192.168.100.88
sftp A 192.168.100.99
[root@test5 named]# vim kgc.com.wan
$TTL 1D
@ IN SOA master.kgc.com. admin.kgc.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 12.0.0.1
www A 12.0.0.1
sftp A 12.0.0.1
~
~
开启centos的缓存
CentOS 默认没有启用DNS客户端缓存,安装nscd(Name Service Cache Daemon,名称服务缓存守护进程)包可以支持DNS缓存功能减少DNS服务器压力,提高DNS查询速度
[root@centos7 ~]#yum -y install nscd
[root@centos7 ~]#systemctl enable --now nscd
#查看缓存统计信息
[root@centos7 ~]#nscd -g
#清除DNS客户端缓存
[root@centos7 ~]#nscd -i hosts
总结
主要学习DNS域名解析,需要掌握正向解析与反向解析还有分离解析、主从复制