目录
一、域名解析
域名解析协议(DNS)用来把便于人们记忆的主机域名和电子邮件地址映射为计算机易于识别的IP地址。DNS是一种C/S的结构,域名是为了方便记忆而专门建立的一套地址转换系统,要访问一台互联网上的服务器,域名解析就是将域名重新转换为IP地址的过程。一个域名对应一个IP地址,或一个IP地址对应多个域名、多个不同的域名也可以解析到一个IP地址。域名解析需要由专门的域名解析服务器(DNS)来完成。
解析过程:比如,一个域名为:abc.com,是想看到这个现HTTP服务,如果要访问网站,就要进行解析,首先在域名注册商那里通过专门的DNS服务器解析到一个WEB服务器的一个固定IP上:211.214.1.123,然后,通过WEB服务器来接收这个域名,把abc.com这个域名映射到这台服务器上。那么,输入abc.com这个域名就可以实现访问网站内容了.即实现了域名解析的全过程;
人们习惯记忆域名,但机器间互相只认IP地址,域名与IP地址之间是对应的,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的。
DNS服务器的功能
– 正向解析:根据注册的域名查找其对应的IP地址
– 反向解析:根据IP地址查找对应的注册域名,不常用
域名结构: 树型结构
所有的域名都必须以点结尾(大多数情况没有以点结尾是因为游览器会帮我们补全)
www.qq.com. www.baidu.com.
根域名: .
一级域名: .cn .us .kr .tw .hk .jp .com....... #一级域名如cn 就是代表是中国的域名 .com就代表国际化的商业域名
二级域名: .tedu.cn .net.cn .org.cn ...... #二级域名就需要在结尾加上一级域名了,可以认为是一级域名的子域名
三级域名: baidu.com.cn taobao.com.cn .com.cn ........
全限定域名(FQDN)=主机头部+注册的域名
Full Qualified Domain Name,完全合格主机名
单是有域名还是访问不到公司里的服务器,因为没有定位到主机,所以需要加上主机头部,构成FQDN
二、搭建单区域DNS服务器
1.实验要求
单区域DNS服务器是最为简单的DNS解析服务器,配置起来也比较简单,来看一个案例
本例要求要求为DNS区域jjh.cn搭建一台DNS服务器,以便用户能通过域名的方式访问网站。测试阶段主要提供以下正向记录:
- A.jjh.cn ---> 192.168.4.7
- B.jjh.cn ---> 192.168.4.10
- C.jjh.cn ---> 192.168.4.20
分析一下,要完成这个实验,要有一台DNS服务器,用于解析域名,定位到服务器上.两台用于访问的服务器,B和C,一台用于测试的客户机,称为client.四台机器的ip位于同一网段
客户机的dns填写为A,帮助其解析域名
2.搭建dns服务
快速构建DNS服务器的基本过程:
- 安装 bind、bind-chroot 包
- 建立主配置文件 /etc/named.conf
- 建立地址库文件 /var/named/.. ..
- 启动 named 服务
简单的讲一下dns服务的基本结构,分为两个部分,主配置文件,和地址库文件
主配置文件的功能 : 对于一个域名,如jjh.cn,我们要单独为它创建一个ip地址库文件,并且告诉配置文件到哪去找这个地址库文件
地址库文件 : 对于一个完整的域名(FQDN),我们怎么找到它的主机呢,这需要手动创建好主机头部(主机名)与ip的映射,即用某个特定的主机头部访问到某个唯一的主机
配置及使用DNS客户端的基本过程:
- 修改配置文件/etc/resolv.conf,添加nameserver=DNS服务器地址
- 使用host命令查询,提供目标域名作为参数
1)在A上安装包
[yum搭建点这里]Centos配置YUM仓库,本地yum仓库_JJH的创世纪的博客-CSDN博客
[root@svr7 ~]# yum -y install bind bind-chroot
2)重启服务
[root@svr7 ~]# systemctl restart named
3)建立主配置文件 /etc/named.conf
打开配置文件后会有很多内容,但是这个案例并没有过高的要求,所以只需要最低限度的配置文件即可分析一下案例要求, 要求客户端访问dns服务器能够帮助其解析域名主机+jjh.cn,那么将主机名与它们的ip地址做一个映射就好啦.
最简化配置,删除多余的配置信息,
[root@A ~]# vim /etc/named.conf
[root@A ~]# named-checkconf /etc/named.conf //修改完后检查语法
options {
directory "/var/named"; #指定地址库文件位置
};
zone "jjh.cn" IN { #设置本机负责的域名
type master; #设置本机为权威主DNS服务器
file "jjh.cn.zone"; #设置地址库文件名称.地址库文件一般以.zone结尾
};
4)建立地址库文件 /var/named/jjh.cn.zone
[root@A ~]# vim /var/named/jjh.cn.zone
[root@A ~]# chmod :named /var/named/jjh.cn.zone #修改所属组,必要
$TTL 1D //文件开头部分可保持不改
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
jjh.cn. NS A //本区域DNS服务器的FQDN 这里为 A.qq.com NS
A A 192.168.4.7 //为NS主机提供A记录,第一个记录往往是本机 A代表正向解析
B A 192.168.4.10 //其他正向地址记录.. ..
C A 192.168.4.20
5)重启服务
[root@svr7 ~]# systemctl restart named
6)为客户端配置dns服务器
为client客户机配置dns
[root@A ~]# echo "nameserver 192.168.4.7" > /etc/resolv.conf
7)测试
在客户机上测试,输入命令nslookup 完整域名 可以查看有哪太服务器提供
[root@A ~]# nslookup A.jjh.cn
Server: 192.168.4.7
Address: 192.168.4.7#53Name: A.jjh.cn
Address: 192.168.4.7---------------------------------------------
[root@A ~]# nslookup B.jjh.cn
Server: 192.168.4.7
Address: 192.168.4.7#53Name: B.jjh.cn
Address: 192.168.4.10---------------------------------------------
[root@A ~]# nslookup C.jjh.cn
Server: 192.168.4.7
Address: 192.168.4.7#53Name: C.jjh.cn
Address: 192.168.4.20
如果输入D.jjh.cn呢,因为没有这个主机,所以结果是这样
[root@svr7 ~]# nslookup D.jjh.cn
Server: 192.168.4.7
Address: 192.168.4.7#53** server can't find www.tedu.cn.com: SERVFAIL
三、特殊DNS解析
这里会介绍几种DNS解析的用法,如DNS轮询,泛域名解析,解析记录的别名,有规律的泛域名解析
1.DNS轮询
说道DNS轮询,不得不提到基于DNS解析记录负载均衡,简单来讲,就是降低一台服务器的压力,分散到其他主机上面.如图
当ABC访问Server服务器时,服务器要同时向三台客户机提供数据,如果将访问机的数量扩大到1000台,如果一台服务器最多同时处理1000台,那么第1001台以后的客户机就必须等待前面的访问结束,那么如何让他们扩大同一时间的访问量呢,那就要用到负载均衡技术了.
轮询法基本上是最简单的负载均衡算法,基本思路就是对所有的服务器节点按顺序分配,每个服务器的概率是等同的,这种情况适合于服务器的性能等指标一样的情况。
如图,将一台主机作为dns服务器,采用轮询法每次请求不同的服务器
在上一个案例的基础上,修改zone地址库如下,为了简化实验就不再创建虚拟机了,单纯已测试为主
[root@A ~]# vim /var/named/jjh.cn.zone
$TTL 1D //文件开头部分可保持不改
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
jjh.cn. NS A
A A 192.168.4.7
B A 192.168.4.10
C A 192.168.4.20
C A 192.168.4.30
C A 192.168.4.40
[root@svr7 /]# systemctl restart named #重启服务
这样子写代表什么意思呢,意思是这样:当客户机通过全域名 C.jjh.cn 访问时, dns采用轮询的方式将请求发给客户机,例如第一次请求192.168.4.20的服务器,第二次请求192.168.4.30的服务器,以此轮询,
[root@A ~]# nslookup C.jjh.cn
Server: 192.168.4.7
Address: 192.168.4.7#53Name: C.jjh.cn
Address: 192.168.4.20--------------------------------------------
[root@A ~]# nslookup C.jjh.cn
Server: 192.168.4.7
Address: 192.168.4.7#53Name: C.jjh.cn
Address: 192.168.4.30--------------------------------------------
[root@A ~]# nslookup C.jjh.cn
Server: 192.168.4.7
Address: 192.168.4.7#53Name: C.jjh.cn
Address: 192.168.4.40
结果并不唯一,但是解决了高访问量造成的服务器延迟,代价是需要增加服务器数量
2.泛域名解析
泛域名解析比较好理解,用*代表除表内写了的域名外,所有FQDN都会请求*制定的ip服务器
[root@svr7 /]# vim /var/named/tedu.cn.zone
jjh.cn. NS A
A A 192.168.4.7
B A 192.168.4.10
C A 192.168.4.20
* A 192.168.4.100
[root@svr7 /]# systemctl restart named[root@A ~]# nslookup F.jjh.cn
Server: 192.168.4.7
Address: 192.168.4.7#53Name: F.jjh.cn
Address: 192.168.4.100--------------------------------------------
[root@A ~]# nslookup D.jjh.cn
Server: 192.168.4.7
Address: 192.168.4.7#53Name: D.jjh.cn
Address: 192.168.4.100
3.解析记录的别名纠错
使用场景,为了让用户即使输错也能访问到服务器,以此用到这个技术,如www.jjh.cn 错写成wwww.jjh.cn 多写了一个w,类似这样的情况,有的时候配置一个纠错别名可以使访问更人性化.
4.有规律的泛域名解析
如果有多台服务器,可以用泛域名来配置,向下面这样的情况就需要50条配置.
pc1.jjh.cn -----> 192.168.10.1
pc2.jjh.cn -----> 192.168.10.2
pc3.jjh.cn -----> 192.168.10.3
pc4.jjh.cn -----> 192.168.10.4
.......
pc50.jjh.cn -----> 192.168.10.50
使用 内置函数:$GENERATE 制造连续范围的数字
$GENERATE 1-50 pc$ A 192.168.4.$
jjh.cn. NS A
$GENERATE 1-50 pc$ A 192.168.4.$
[root@A ~]# nslookup pc1.jjh.cn
Server: 192.168.4.7
Address: 192.168.4.7#53Name: pc1.jjh.cn
Address: 192.168.4.1............................................
[root@A ~]# nslookup pc50.jjh.cn
Server: 192.168.4.7
Address: 192.168.4.7#53Name: pc50.jjh.cn
Address: 192.168.4.50
四、DNS子域授权
子域授权: 让父域的DNS服务器知晓子域DNS服务器
让父域的DNS服务器可以解析子域的域名
使用情景:假设有一所学校的域名为hngy.cn,我们可以通过www.hngy.cn访问这个学校的web页面.这个web页面有供学生和老师访问的页面,假设称为学生后台管理页面和老师后台管理页面.那么我们要访问这两个页面,就必须通过hngy.cn这个域名来访问,当学校进行了扩展,学生和老师的人数大增,那么服务器的负荷也会增大,此时有多种解决方案,一是增加一台服务器,扩大负载量.二是进行子域授权,将这两个部分独立出来.于是学校又申请了两个域名,分别为 student.hngy.cn teacher.hngy.cn 那么我们现在就可以直接访问这两个页面了.
那么为什么要使用子域授权呢?
子域授权,也就是DNS的分布式。
通过在原有的域上划出一个小的区域,并给新DNS服务器管理。
如果有客户端请求解析在这个划分区域中的域名,则只要找新的子DNS服务器。
这样的做的好处可以减轻主DNS的压力,也便于管理。
这里进行子域授权的好处有: 一个学校的主页有很多功能区块,而这些区块的访问热度是不一致的,如学生后台管理页面的访问量就远远大于其他所有的区块,如果按照方案一扩展服务器,将服务器规模扩大一倍,那么其他的区块也会被扩大一倍,但是用户很少会访问扩展出来的这些服务器上的区块,因为达不到这个访问量,那么这些扩展出来的服务器上的资源就会被浪费.
而使用子域授权可以将学生访问区块独立出来,作为一个子服务器,那么用户访问主服务器的时候,主服务器就会将这个请求交给子服务器处理,那么主服务器就可以处理其他低访问量的请求模块.
1.配置子域授权
父域:hngy.cn 由虚拟机A进行解析 ip : 192.168.4.7
子域1:teacher.hngc.cn 由虚拟机B进行解析 ip: 192.168.4.8
子域2:student.hngc.cn 由虚拟机C进行解析 ip : 192.168.4.9
虚拟机A(主虚拟机),构建DNS服务器,负责解析hngy.cn
[root@pc207 ~]# vim /etc/named.conf
options {
directory "/var/named";
};
zone "hngc.cn" IN {
type master;
file "hngc.cn.zone";
};
[root@svr7 ~]# vim /var/named/hngy.cn.zone
hngy.cn. NS A
teacher.hngy.cn. NS B
student.hngy.cn. NS C
www A 3.3.3.3
B A 192.168.4.8
C A 192.168.4.9
虚拟机B(子虚拟机),构建DNS服务器,负责解析teacher.hngy.cn
[root@pc207 ~]# vim /etc/named.conf
options {
directory "/var/named";
};
zone "teacher.hngc.cn" IN {
type master;
file "teacher.hngc.cn.zone";
};
[root@pc207 named]# vim teacher.hngc.cn.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
teacher.hngc.cn. NS pc207
www A 50.60.70.100
-------------------------------------------------------------------------------------
虚拟机C(子虚拟机),构建DNS服务器,负责解析student.hngy.cn
[root@pc207 ~]# vim /etc/named.conf
options {
directory "/var/named";
};
zone "student.hngy.cn" IN {
type master;
file "student.hngy.cn.zone";
};
[root@pc207 named]# vim student.hngy.cn.zone
student.hngy.cn. NS pc207
www A 50.60.70.80
2.测试
测试访问主虚拟机域名
[root@pc207 /]# nslookup www.hngy.cn
Server: 192.168.4.7
Address: 192.168.4.7#53
Name: www.hngy.cn
Address: 3.3.3.3
测试访问子虚拟机teacher域名
[root@pc207 /]# nslookup www.teacher.hngy.cn
Server: 192.168.4.8
Address: 192.168.4.8#53Non-authoritative answer: #非权威解答 子域授权提供的解析结果会有这个标识
Name: www.teacher.hngy.cn
Address: 50.60.70.100
测试访问子虚拟机student域名
[root@pc207 /]# nslookup student.hngy.cn 192.168.4.7
Server: 192.168.4.9
Address: 192.168.4.9#53Non-authoritative answer: #非权威解答
Name: www.student.hngy.cn
Address: 50.60.70.80