一、DNS介绍
1.1DNS概述
DNS:域名系统,应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,基于C/S架构,服务器端:53/udp, 53/tcp实际上,每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域 名和 IP 地址的对应关系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)。根据地址解析的方向不同,DNS 区域相应地分为正向区域(包含域名到 IP 地址的解析记录)和反向区域(包含 IP 地址到域名的解析记录)
1.2DNS的层次结构
ICANN:互联网名称与数字地址分配机构,负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统的管理。
1.3实现域名解析的方法
方法一:本地host文件
方法二:安装软件服务(见本章标题四)
二、DNS服务器类型
(1)缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定其他 DNS 服务器作为解析来源。
(2)主域名服务器:管理和维护所负责解析的域内解析库的服务器
(3)从域名服务器:从主服务器或从服务器"复制"(区域传输)解析库副本
- 序列号:解析库版本号,主服务器解析库变化时,其序列递增
- 刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
- 重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
- 过期时长:从服务器联系不到主服务器时,多久后停止服务
- 通知机制:主服务器解析库发生变化时,会主动通知从服务器
IPv4的根名称服务器:全球共13个负责解析根域的DNS服务器,美国10个,英国1,瑞典1,日本1
IPv6的根名称服务器:全球共25个,中国1主3从,美国1主2从
三、DNS查询类型及原理
3.1查询方式
- 递归查询:一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后, 若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自己动手)
- 迭代查询:一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次查询。(需要自己动手)
3.2查询原理过程
(1)正向解析查询过程:
- 先查本机的缓存记录
- 查询hosts文件
- 查询dns域名服务器,交给dns域名服务器处理
- 这个dns服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进行下一步
- 求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域服务器
- 求助顶级域服务器,顶级域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器
- 求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器
- 本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端
(2)查询,清理DNS缓存命令
windows系统:
- 查询dns缓存命令:ipconfig /displaydns
- 清理dns缓存命令:ipconfig /flushdns
linux系统:清理dns缓存需要安装nscd软件,启动、执行nscd -i hosts
(3)DNS层次介绍
- 根域名DNS服务器:专门负责根域名
- 一级DNS服务器:专门负责一级域名的解析(一般代表一种类型的组织机构或国家地区)
- 二级DNS服务器:专门负责二级域名的解析
- 三级DNS服务器:专门负责子域名的解析也称为三级域名
四、正向解析
实验环境:CentOS7 实验目标:正向解析 第一步:安装bind [root@server ~]#yum -y install bind bind-utils #主软件 和 配置包管理软件 [root@server ~]#systemctl start named #开启服务 [root@server ~]#systemctl status named #查看服务状态 [root@server ~]#netstat -ntap |grep named [root@server ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33 DNS1=192.168.10.10 #将自己作为DNS服务器 [root@server ~]#systemctl restart network [root@server ~]#cat /etc/resolv.conf #查看DNS有没有生效 [root@server ~]#ping www.baidu.com 第二步:修改主配置文件1 [root@server ~]#vim /etc/named.conf #可以修改配置,注释,或者删除这两行 13行:listen-on port 53 { any; }; 21行:allow-query { any; }; #权限 [root@server ~]#rndc reload #重新加载DNS服务 第三步:修改域名区域配置文件2 [root@server ~]#vim /etc/named.rfc1912.zones #编写域名 zone "FZR.com" IN { type master; #权威服务器 file "FZR.com.zone"; }; [root@server named]#cd /var/named/ #切换目录 [root@server named]#ls [root@server named]#cp -p named.localhost ./FZR.com.zone #-p保留权限复制 [root@server named]#vim FZR.com.zone #编辑数据库文件,解析记录对应关系 $TTL 1D @ IN SOA master.FZR.com. admin.FZR.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS master.FZR.com. master IN A 192.168.10.10 www IN A 192.168.10.20 ftp IN A 192.168.10.30 @ IN A 192.168.10.30 * IN A 192.168.10.20 [root@server named]#named-checkconf #检查启动文件格式 [root@server named]#named-checkzone FZR.com.zone /var/named/FZR.com.zone
第四步:测试实验结果 [root@server named]#rndc reload #重启服务 [root@server named]#host www.FZR.com #测试 [root@server named]#cat FZR.com.zeno [root@server named]#host ftp.FZR.com
操作:
五、反向解析
实验环境:CentOS7 实验目标:反向解析 第一步:修改配置文件1 [root@server ~]#vim /etc/named.rfc1912.zones #修改35-39行 zone "10.168.192.in-addr.arpa" IN { type master; file "ZZJ.com.zone"; allow-update { none; }; }; 第二步:复制反向解析模板 [root@server ~]#cd /var/named/ [root@server /var/named]#cp -p named.loopback ZZJ.com.zone 第三步:修改配置文件2 [root@server /var/named]#vim ZZJ.com.zone $TTL 1D @ IN SOA master.ZZJ.com. admin.ZZJ.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master master IN A 192.168.10.10 100 IN PTR www.ZZJ.com. 200 IN PTR ftp.ZZJ.com. [root@server /var/named]#rndc reload #重新加载服务 第四步:测试 [root@server /var/named]#host 192.168.10.100 [root@server /var/named]#host 192.168.10.200
操作:
六、主从复制
实验环境: 主服务器地址:192.168.10.10(CentOS7-1) 从服务器地址:192.168.10.20(CentOS7-2) 实验目的:主从复制 第一步:从服务器配置 [root@client ~]#yum install bind bind-utils.x86_64 -y [root@client ~]#vim /etc/named.conf #13和21行改成any listen-on port 53 { any; }; allow-query { any; }; [root@client ~]#vim /etc/named.rfc1912.zones #添加下面内容 zone "ZZJ.com" IN { type slave; file "slaves/ZZJ.com.zone"; masters { 192.168.10.10; }; [root@client ~]# systemctl restart named [root@client ~]#ls /var/named/slaves 第二步:主服务器配置 [root@server ~]#vim /etc/named.rfc1912.zones #添加以下行 zone "ZZJ.com" IN { type master; file "ZZJ.com.zone"; allow-transfer { 192.168.10.20; }; }; [root@server ~]#rndc reload 第三步:修改网卡 主服务器: [root@server ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33 添加以两行: DNS1=192.168.10.10 DNS2=192.168.10.20 [root@server ~]#systemctl restart network #重启网卡 从服务器: [root@client ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33 DNS1=192.168.10.10 DNS2=192.168.10.20 [root@client ~]#systemctl restart network #重启网卡 第四步:测试实验结果 主服务器停止named服务: [root@server ~]#systemctl stop named.service [root@server ~]#host www.ZZJ.com [root@server ~]#host mail.ZZJ.com
从服务器操作:
主服务器操作:
测试:
七、开启CentOS的缓存
7.1开启缓存工具
CentOS 默认没有启用DNS客户端缓存,安装nscd(Name Service Cache Daemon,名称服务缓存守护进程)包可以支持DNS缓存功能减少DNS服务器压力,提高DNS查询速度。