目录
一.DNS服务
1.1.DNS简介
什么是DNS?
DNS(Domain Name System) 域名转换系统,应用层协议,是互联网的一项服务,也是一个分布式数据库。
使用DNS的原因是IP地址不便于记忆,DNS使用户可以通过易记的域名快速访问各种网络资源。
缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,
但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定
其他 DNS 服务器作为解析来源。
主域名服务器:管理和维护所负责解析的域内解析库的服务器
从域名服务器:从主服务器或从服务器"复制"(区域传输)解析库副本
序列号:解析库版本号,主服务器解析库变化时,其序列递增
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
过期时长:从服务器联系不到主服务器时,多久后停止服务
通知机制:主服务器解析库发生变化时,会主动通知从服务器
1.2.DNS查询类型及解析原理
- 主域名服务器:特定DNS区域的权威服务器,自行建立所负责区域的地址数据文件
- 从域名服务器:从主服务器或从服务器"复制"(区域传输)解析库副本
- 递归查询:客户机和本地服务器之间的,对已有服务器依次发送,A可以解析则返回,不能则递归到下一台直到成功或全部都失败返回结果,不需要动手。
- 迭代查询:本地服务器向其他服务器查询,查询源不变查询目标一直在变,需要多次查询,需要自己动手。
本地host文件:文件位置:/etc/hosts
当局域网没有条件建立DNS服务器,但又想让局域网内的用户可以使用计算机名互相访问,应配置/etc/hosts文件
本地hosts文件的作用:
本地hosts文件用于在域名解析时将特定的域名与对应的IP地址进行映射。
在域名解析过程中,操作系统会首先检查本地hosts文件中是否存在与查询域名匹配的条目,如果有,则直接返回hosts文件中指定的IP地址,跳过后续的DNS查询过程。
本地hosts文件缺点:
过于分散
要手动更新文件
解析原理:
正向解析:将域名解析为对应的ip地址。
反向解析:通过ip地址解析对应的域名。
查询原理过程:
①先查本机DNS缓存的缓存记录,有则返回结果,没有则进行下一步
②查询hosts文件,有则返回结果,没有则进行下一步
③查询dns域名服务器,交给dns域名服务器处理 以上过程成为递归查询(我要一个答案你直接会给我结果),这个dns服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进行下一步
④求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域服务器 ⑤求助顶级域服务器,顶级域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器
⑥求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器
⑦本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端
(1)先查本机的缓存记录,如果有直接返回结果
(2)如果没有,在查本地的hosts文件,如果有记录直接返回结果
(3)如果没有,通过本地dns域名服务器查询,如果有直接返回结果
(4)如果没有,向根域服务器求助,根域服务器通过迭代的方式查询顶级域服务器
(5)顶级域服务器同样通过迭代的方式查询二级域服务器
(6)通过迭代的方式找到权威服务器之后
(7)权威服务器通过递归的方式找到结果,把结果发送给本地域名服务器
(8)本地域名服务器将结果记录下来,然后将结果发送给客户端
DNS系统分布式数据结构:
(1)根域
使用“.”表示,位于域命名空间层次结构的最高层;
在根域服务器中只保存了其下层的一级域的DNS服务器名称和IP地址对应关系;
(2)顶级域
顶级域位于根域下层,可以分为两类:
组织域(.com,.net,.org,.gov,.edu,.mil等)
国家域(.iq,.tw,.hk,.jp,.cn等);
(3)二级域
二级域位于顶级域下层,是指为了在Internet上使用而注册到个人或企事业单位的域名;
(4)子域
子域是根据具体情况从二级域中按部门或地理位置创建;
(5)主机站点
位于DNS域命名空间的最低层,主要指计算机的主机名;
1.3.bind
BIND是DNS服务器软件。
BIND 服务器可以提供域名解析服务,能够接收客户端的 DNS 查询请求,并返回相应的 IP 地址。
1.4.DNS正向解析
正向解析:将域名解析为对应的ip地址。
域名解析类型:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录SOA,是起始授权机构记录,说明了在众多 NS 记录里哪一台才是主要的服务器。在任何DNS记录文件中,都是以SOA ( Startof Authority )记录开始。SOA资源记录表明此DNS名称服务器是该DNS域中数据信息的最佳来源。
A(internet Address):将域名解析成IPv4地址
AAAA(FQDN):将域名解析成IPv6地址
PTR(PoinTeR):反向解析,将ip地址解析成域名
NS(Name Server):指定管理域名解析的权威域名服务器
CNAME :将域名解析为另一个域名,可用于创建别名
MX(Mail eXchanger):指定接收某域名邮件的邮件服务器地址
TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮件)记录,https验证等
SOA记录与NS记录的区别:NS记录表示域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析;SOA记录设置一些数据版本和更新以及过期时间等信息。
下载DNS服务器软件:bind,powerdns,dnsmasq,unbound,coredns
bind:服务器
bind-libs:相关库
bind-utils: 客户端
bind-chroot: 安全包,将dns相关文件放至 /var/named/chroot/
1.4.1.模拟
①例子---安装下载bind:
搭建环境----下载的时候记得看防火墙关没关,如果没关可以手动关闭,可以选择临时关闭或者永久关闭。
临时关闭:
systemctl stop firewalld #关闭防火墙 setenforce 0 #关闭seLinux
永久关闭:
先打开终端vi /etc/selinux/config 将SELINUX=enforcing改为SELINUX=disabled, 然后保存退出,就永久关闭将setenforce 0 关掉
[root@localhost ~]# yum install bind* -y
②修改本机DNS
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
③编辑主配置文件
[root@localhost ~]# vim /etc/named.conf
将其修改成:
或者注释掉也行
④编辑域名文件
[root@localhost ~]# vim /etc/named.rfc1912.zones
将其修改成:
⑤切换到cd /var/named目录下
[root@localhost ~]# cd /var/named
[root@localhost ~]# ls
⑥复制模板文件到当前文件夹内,并命名为 lbl.com.zone(该命名必须与/etc/named.rfc1912.zones配置文件中自己写的一致,多一个空格也不行)
[root@localhost named]# cp -a named.localhost lbl.com.zone
# 创建域名文件
# 在复制的时候必须加-a或者-p选项,保留文件的权限
⑦配置lbl.com.zone文件
[root@localhost named]# vim lbl.com.zone
将其修改成:
对上图中配置文件的解读:
⑧启动DNS服务和重启网卡服务
[root@localhost named]# systemctl start named
# DNS服务的软件名叫named[root@localhost named]# systemctl restart network
⑨测试
三条命令都可以进行测试(dig最详细):[root@localhost named]# host www.lbl.com
[root@localhost named]# host master.lbl.com
[root@localhost named]# nslookup www.lbl.com
[root@localhost named]# nslookup master.lbl.com[root@localhost named]# dig www.lbl.com
[root@localhost named]# dig master.lbl.com
1.5.主从复制
准备两台虚拟机:
主服务器地址:192.168.47.100
从服务器地址:192.168.47.3
先把seLinux和防火墙关了
(1)主服务器的配置
①关闭防火墙和selinux,安装bind
[root@localhost ~]# systemctl stop firewalld.service #关闭防火墙
[root@localhost ~]# setenforce 0 #关闭安全性功能selinux
[root@localhost ~]# yum install bind bind-utils.x86_64 -y
②修改主配置文件 /etc/named.conf
[root@localhost ~]# vim /etc/named.conf
③修改域名配置文件 /etc/named.rfc1912.zones
[root@localhost ~]# vim /etc/named.rfc1912.zones
④编辑数据库文件
cd /var/named #切换到数据库文件所在路径
cp -p named.localhost lbl.com.zone #导入配置模板
vim lbl.com.zone #编辑数据库文件
将原始配置修改:
修改成这样:
⑤配置网卡
vim /etc/sysconfig/network-scripts/ifcfg-ens33 #编辑网卡配置
systemctl restart network #重启网络服务
⑥测试正向解析是否成功
systemctl start named #启动bind服务
host www.lbl.com #解析域名
(2)从服务器的配置
①关闭防火墙和selinux,安装bind
systemctl stop firewalld.service #关闭防火墙
setenforce 0 #关闭安全性功能selinux
yum install bind bind-utils.x86_64 -y
②编辑主配置文件
vim /etc/named.conf
③编辑域名文件
vim /etc/named.rfc1912.zones
④查看数据库文件
systemctl start named #开启bind服务
ls /var/named/slaves #查看数据库文件是否生成
⑤测试主从复制是否成功,在从服务器上测试
由于没有在主服务器上配置数据文件,从服务器要解析域名,需要拷贝主服务器的数据库文件
dig @192.168.47.100 www.lbl.com #测试
#dig为解析命令
#www.lbl.com为要解析的域名
#@192.168.47.100 表示用从服务器作为dns服务器解析