1. DNS域名解析服务原理
1.1 概述
DNS就是域名系统,是因特网中的一项核心服务,是用于实现域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,通过主机名,得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
DNS使用的协议及端口号:
DNS的默认端口为53
DNS端口分为TCP和UDP:
1.TCP是用来做区域传送,多用于主从同步
在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息
2.UDP是用来做DNS解析的
1.2 域名结构(FQDN)
FQDN:完全合格域名
FQDN=主机名+域名
例如:
主机名是www,域名是baidu.com,那么它的FQDN就是www.baidu.com
域名结构解析:
从后往前排列的:
根域
顶级域
二级域
三级域(子域)
主机名
顶级域名分类:
1.国家顶级域:cn(中国),jp(日本),uk(英国),us(美国)
2.通用顶级域:com(商业机构),net(网络服务机构),gov(政府机构),org(非盈利性组织)
3.基础结构顶级域:arpa(从ip到域名的反向解析)
1.3 域名解析流程
例如客户机如何访问www.sina.com.cn.
第一次访问:
1.查看本机本机的网卡,是否开启自动解析dns
2.命令提示符里面查看 ipconfig ip+dns信息
3.192.168.1.1 本地域名服务器
里面存在一张表 域名 --ip
域名服务器发出请求,需要去寻找根域
根域也不知道是哪一个,但是知道是.cn ,返回信息(顶级域的ip信息)回馈给服务器,服务器去找.cn
.cn 里面存在.com 回馈.com的信息给服务器,服务器去找.com
.com 里面存在诸多ip信息,发现sina 的信息存在,回馈给服务器,服务器去找sina
sina 里面存在诸多主机名,回馈给服务器,www的ip的信息,
服务器得到从sina得到的信息,记录下ip地址,服务器返回给客户机,得到准确地址
第二如此访问:
客户机可以直接访问域名服务器,客户机本地有缓存映射表
一般来说,设定本地域名
dns的世界里有几个很强的概念:
1.递归查询
能直接得到结果的,客户机直接查询域名服务器,能够知道访问的地址
能够知道准确结果的,叫递归
不能够知道准确结果的,需要去查询,叫迭代
2.迭代查询
从域名服务器先查根域——顶级域——三级域
基本上的步骤是:主机如果想要访问百度
1. 查看缓存
2.查看hosts文件
3.找dns服务器
4.dns服务器查看缓存
5.dns服务器访问根域…
1.4 DNS系统类型
缓存域名服务器
也称为DNS高速缓存服务器
通过向其他域名服务器查询获得域名-> IP地址记录
将域名查询结果缓存到本地,提高重复查询时的速度
无任何作用,维护本地的映射记录
本地域名服务器,192.168.1.1
阿里云dns服务器:223.5.5.5
主域名服务器
特定DNS区域的权威服务器,具有唯一性
负责维护该区域内所有域名->IP地址的映射记录
需要自行建立所负责区域的地址数据文件
请求映射记录,维护本地映射功能
从域名服务器
也称为辅助域名服务器,是对主域名服务器的热备份
其维护的域名->IP地址记录来源于主域名服务器
需要从主域名服务器自动同步区域地址数据库
跟主域名服务器同步内容,当主挂了,可以通过从域名服务器继续访问
1. DNS权威性应答与非权威性应答的关系
如果DNS服务器在自己的区域文件里找到了客户端需要查询的记录,就会返回一个权威性应答。
例如解析百度:
这就是一个非权威应答
如果DNS服务器在自己的区域文件里找到了客户端需要查询的记录,就会返回一个权威性应答。
非权威应答:
经过层层迭代得到的域名地址
权威应答:
在dns服务器中直接找到地址
2. DNS域名解析服务配置
2.1 DNS域名解析服务配置前准备
做这个服务不涉及修改网卡信息,直接使用NAT模式(主机模式也可以进行操作)
先下载域名服务器的软件
BIND (Berkeley Internet Name Daemon)
●BIND是应用最广泛的DNS服务程序
官方站点: https://www.isc.org/
相关软件包
●bind-9.9.4-37 .el7 .x86_ 64.rpm
●bind-utils-9.9.4-37 .el7.x86_ 64.rpm
obind-libs-9.9.4-37 .el7.x86 64.rpm
●bind-chroot-9.9.4 -37.el7.x86_ 64.rpm
这里使用yum 直接进行安装
查看配置文件:
/etc/named.conf 主配置文件
/etc/named.rfc1912.zones 区域配置文件
/var/named/named.localhost 区域数据文件的模板
/var/named/named.ca 根域名配置服务器指向文件
2.2 修改配置文件(正向解析+访问网页)
2.2.1 查看主配置文件并修改:
主配置文件:vim /etc/named.conf
修改内容如下:
2.2.2 查看区域配置文件并修改:
区域配置文件 /etc/named.rfc1912.zones
allow 不自动更新
修改内容如下:
2.2.3 查看区域数据文件的模板并修改:
区域数据文件的模板 /var/named/named.localhost
查看文件位置,并进行复制,复制的名字是刚才自己设置的域名名称的文件:
进入文件可以查看到如下内容:
详细分析:
$TTL 1D :
#有效解析记录的生存周期,默认单位为秒,1D就是1天,1分钟就是1M
#@ 变量表示当前域名
IN 部分表示互联网
SOA 是表示这是开始权限记录,认证记录
0 ; serial #更新序列号,180位以内数字, 用于主从同步,主服务器这个数值要大于从服务器否则无法同步
1D ; refresh #刷新时间,从服务器向主服务器轮询检查区域文件是否变更之间等待的时间量
1H ; retry #重试刷新时间间隔,如果从机在刷新周期结束时无法连接到主机,则它将等待此时间并重试轮询主机
1W ; expire #失效时间,如果从服务器在此时间内无法与主服务器联系,则它不再作为此区域的权威来源的返回响应
3H ) ; minimum #无效解析记录的生存周期
SOA这种记录是所有区域性文件中的强制性记录。它必须是一一个文件中的第一一个记录
其他各种记录解析:(IN可以省略)
NSkgc.com.
#记录当前区域的DNS服务器的名称
IN MX 10 mail.xx.xxx
#邮件交换,5表示优先级,注意与后面的域名的间隔大小,优先级: 0-99, 数值越小优先级越高,一 般用于多个邮件服务器的场景
mail IN A xXxIP
www IN A xxxIP
#记录正向解析对应的IP,叫做主机A记录
ftp IN CHAME www
#CNAME使用别名,ftp是www的别名
* IN A xxxIP
#泛域名解析,“*"代表任意 主机名
修改内容如下:
IN 可以省略,A 主机 后面接本机的地址
然后开启服务,查看一下服务是否开启
2.2.4 验证dns服务器是否搭建成功:
在win10 虚拟机里面设置好ip地址:
这里出现了超时,问题报错:
寻求解决方法,先去查看配置文件,重载服务,发现也出错了
进行翻译一下是啥原因
进入提示的错误进行排错
定位到文件,进入编辑,set nu 显示出行号,定位到第30行,仔细看了一遍又一边,发现是少了一个分号!!!
然后再接着重新加载一下服务,查看一下端口信息
切换回win10系统进行操作,看是否能解析地址
这就很nice 大功告成,所以说还是要细心!!!
2.2.5 搭建web服务器使win10解析地址并能访问
web服务器使用yum 安装即可
开启服务,并且进入网站,编写网页内容,保存退出
在win10里面可以访问到网页
2.3 修改配置文件(反向解析)
根据ip 解析域名
主配置文件:/etc/named.conf 里面不需要更改,保持跟正向解析的一样
只需要直接配置区域数据文件:/etc/named.rfc1912.zones
配置反向解析内容:
复制5行,在下面添加进需要解析的网段,顺便跟正向解析有个对比
进入配置文件: /var/named/fairy.com.zone
检查一下配置文件,开启服务,看下端口号
查看结果,是可以解析到的,不过跟正向解析也看不出特别的地方
为了看出区别,我们在虚拟机里进入 /etc/resolv.conf
平滑的重载配置文件,这个是dns里面特有的:
看一下详细的结果:
2.4 修改配置文件(别名解析)
正常是这样子访问地址,这里给他改个名字也可以访问,就是两个域名,访问同一个地址
进入修改配置文件 /var/named/fairy.com.zone
在win10里面测试一下
2.4 修改配置文件(泛域名解析)
任何主机访问都能访问到的,地址是任意设置的
像一些主机名,容易混淆,都能访问到这个网页
进入修改配置文件 /var/named/fairy.com.zone
在win10里面测试一下
2.5 修改配置文件(邮件解析)
IN MX 10 mail. XXX.XXX
#邮件交换,5表示优先级,注意与后面的域名的间隔大小,优先级: 0-99, 数值越小优先级越高
进入修改配置文件 /var/named/fairy.com.zone
在win10里面测试一下
3.DNS系统类型
3.1 缓存服务器
yum -y install bind 先装一个dns 服务器,只需要修改一个配置文件即可
删除剩下的内容,目的是不去根域下面去找
然后在win10 里面,更改一下变成缓存dns服务器的ip,验证一下结果:
验证结果:
解决方法把防火墙关了,在重启一下服务:
3.2 主从服务器
3.2.1 搭建环境
主服务器:192.168.152.130
从服务器:192.168.152.129
客户机的ip地址:192168.152.10
3.2.2 配置文件
主服务器:
进入配置文件:vim /etc/named.rfc1912.zones
从服务器:
进入配置文件:vim /etc/named.conf
进入配置文件:vim /etc/named.rfc1912.zones
进入 /var/named/slaves目录查看:
然后开启服务,记得关闭防火墙:
验证一下,换成从服务器的ip地址:
这时候,我们来看一下之前的文件里面是否有内容同步过来:
3.2.3 模拟故障,测试从服务器是否生效
设置主从服务器的根本目的是实现主服务器挂掉了,从服务器顶上继续可以解析地址:
这里,我们将主服务器的dns功能停止,模拟故障
systemctl stop named
然后在win10里面设置网卡的信息:
验证结果是不成功的
这是win10的一个弊端,它默认找寻主服务器,找不到从服务器,这里用另一台虚拟机来试一下效果:
重启一下网卡,看一下网关信息:
验证是否可以成功,能否解析到:
3.2.4 实现主从同步
我们已经配置了主从服务器了,如果这时主服务器的区域数据文件中又添加了新的解析条目,怎么实现从服务器也能自动同步这个数据呢?
首先进入主服务器的区域配置文件 /etc/named.rfc1912.zones
修改在主服务器的区域数据文件中添加新的条目的同时将序列号修改一个比之前更大的数值,序列号最大10位,大于从服务器的数值即可
重载服务,查看文件里面是否有新的记录
虚拟机里面也可以访问到:
4.DNS设置主从分离
4.1 主从分离原理
分离解析的域名服务器实际也是主域名服务器,主要是指根据不同的客户端提供不同的域名解析记录,来自不同地址的客户机请求解析同一域名时,为他们提供不同的解析结果。
4.2 搭建环境
至少需要4台机器: 两台linux 两台windos
当DNS服务器面向Internet和企业内部局域网同时提供DNS服务时,公司内部主机要访问公司网站时,直接找网关服务器解析成公司内部的网站服务器的地址,而Internet上的主机访问这个域名的时候其实是映射到网关服务器的出口地址。
实验拓补如下:
4.3 实验步骤
1.dns服务器 用作网关服务器
新加一块网卡给DNS服务器,做连接外网的出口,他自己作为外网的网关,所以不用再配置网关
之前要安装好BIND软件包
然后更改网络模式,加一块网卡:
配置地址,因为我电脑上的vm1的网段是192.168.52.0,所以我自己设置成这样子,因为dns自己作为一个网关,所以不需要配置网关地址跟dns地址
进入ens37网卡进行配置:
cp -p /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens37
#拷贝ens33网卡配置文件改名为ens37网卡
vim /etc/sysconfig/network-scripts/ifcfg-ens37
#对新加网卡进行配置
都配置好了之后,重启网卡并查看地址是否正确
ens33:内网ip
ens37:外网ip出口
然后开始配置dns的配置:
进入配置文件/etc/named.conf
进入配置文件/etc/named.rfc1912.zones
这个文件是重点,要建立两个视图view,目的是用来 让数据自己判断来源
将文件里面的zone块全都删除
进入配置文件,因为没有,所以要先复制一下:
/var/named/fairy.com.zone.neiwang
/var/named/fairy.com.zone.waiwang
分别进入文件进行编辑:
先编辑内网的:/var/named/fairy.com.zone.neiwang
再编辑外网的:/var/named/fairy.com.zone.waiwang
然后保存退出,检查下配置文件是否正确,开启服务
2.web服务端
查看httpd软件包有没有安装
改变网络模式,因为是内网里面的web服务器,所有用的是vm1网络模式
查看网卡信息并进行修改,网关修改成dns服务器的地址
重启网卡并查看是否正确:
然后开启服务,查看端口是否开启,编写一个网页
3.内网客户机
测试一下能不能ping通dns的地址和web服务器的地址:
4.外网客户机
4.4 测试主从分离实验结果
一些配置按照上述步骤设置好,配置文件写写好,开始测试是否成功,地址能否解析
内网客户机解析地址:
内网客户机访问网页:
外网客户机解析地址:
外网客户机访问网页:
这个必然是不能被访问的,因为解析的地址上是没有web服务器的
所以这里需要映射,需要完成一个NAT的转换,可以访问内网的网页
可以利用防火墙来映射
制定一个防火墙的规则
然后还要再给服务器添加一个路由转发的功能
不同的网段之间需要访问的时候,要开启路由转发的功能
进入配置文件/etc/sysctl.conf
也可以使用echo > /proc/sys/net/ipv4/ip_ forward 为临时配置
然后保存退出,刷新一下
然后再次访问一下网页,看能否成功