文章目录
- 一、 域名解析服务器介绍
- 二、DNS域名解析的过程
- 三、搭建DNS服务器的详细配置
- 四、实验练习
一、 域名解析服务器介绍
DNS(Domain Name System) 是互联网上的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。
DNS系统使用的是网络的查询,那么自然需要有监听的port。DNS使用的是53端口,在/etc/services(搜索domain)这个文件中能看到。通常DNS是以UDP这个较快速的数据传输协议来查询的,但是没有查询到完整的信息时,就会再次以TCP这个协议来重新查询。所以启动DNS时,会同时启动TCP以及UDP的port53。
1、因特网的域名结构
由于因特网的用户数量较多,所以因特网在命名时采用的是层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。“域”(domain)是名字空间中一个可被管理的划分。
域名只是逻辑概念,并不代表计算机所在的物理地点。域名可分为三大类:
(1)国家顶级域名:采用ISO3166的规定。如:cn代表中国,us代表美国,uk代表英国,等等。国家域名又常记为ccTLD(country code top-level domains,cc表示国家代码contry-code)。
(2)通用顶级域名:最常见的通用顶级域名有7个,即:com(公司企t业),ne(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。
(3)基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名。
2、域名服务器的类型划分
根据域名服务器起的作用,可以把域名服务器划分为以下类型:
(1)根域名服务器:最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助根域名服务器。所以根域名服务器是最重要的域名服务器。假定所有的根域名服务器都瘫痪了,那么整个DNS系统就无法工作。需要注意的是,在很多情况下,根域名服务器并不直接把待查询的域名直接解析出IP地址,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。
(2)顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名。
(3)权限域名服务器:负责一个“区”的域名服务器。
(4)本地域名服务器:本地域名服务器不属于域名服务器的层次结构,但是它对域名系统非常重要。当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。
为了提高域名服务器的可靠性,DNS域名服务器都把数据复制到几个域名服务器来保存,其中的一个就是主DNS服务器(Master name server),负责解析至少一个域。其他的是辅助(从)DNS服务器(Slave name server):负责解析至少一个域,是主DNS服务器的辅助。当主域名服务器出故障时,辅助域名服务器可以保证DNS的查询工作不会中断。主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行。这样就保证了数据的一致性。
缓存DNS服务器:不负责解析域,只是缓存域名解析的结果。
二、DNS域名解析的过程
过程描述:
1、在浏览器中输入www . qq .com 域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理qq.com的DNS服务器地址给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www . qq .com主机。
6、如果用的是转发模式,本地DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把请求转至上上级,以此循环。找到最后把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
注:从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间使用的交互查询就是迭代查询。
常见的DNS服务器地址:
114.114.114.114是国内移动、电信和联通通用的DNS,手机和电脑端都可以使用,干净无广告,解析成功率相对来说更高,国内用户使用的比较多,而且速度相对快、稳定,是国内用户上网常用的DNS。
8.8.8.8是GOOGLE公司提供的DNS,该地址是全球通用的,相对来说,更适合国外以及访问国外网站的用户使用。
DNS解析方式:
正向解析:将FQDN----->IP
反向解析:将IP----->FQDN
三、搭建DNS服务器的详细配置
提供DNS服务的软件叫bind,服务名是named。
[root@localhost ~]# yum install bind -y
[root@localhost ~]# rpm -ql bind
/etc/named.conf # bind主配置文件
/etc/named.rfc1912.zones # 定义zone的文件
/etc/rndc.conf # rndc配置文件
/usr/sbin/named-checkconf # 检测/etc/named.conf文件语法
/usr/sbin/named-checkzone # 检测zone和对应zone文件的语法
/usr/sbin/rndc # 远程dns管理工具
/usr/sbin/rndc-confgen # 生成rndc密钥
***\*/var/named/named.ca #\**** ***\*根解析库\****
/var/named/named.localhost # 本地主机解析库
/var/named/slaves # 从ns服务器文件夹
DNS服务的主配置文件:
[root@localhost ~]# vim /etc/named.conf
options {
定义监听端口,如果所有地址都监听,则只写端口
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
定义数据文件目录
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";统计档案、文件
memstatistics-file "/var/named/data/named_mem_stats.txt";分配统计目录
allow-query { localhost; };只允许本地主机进行查询
recursion yes;允许递归
logging {
指定日志记录分类和他们的目标位置
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
定义区域
type hint; #master主域名服务器;slave从域名服务器;hint根域名服务器
file "named.ca";
};
包含其他的配置文件
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
四、实验练习
搭建DNS服务器:准备两台机器
1.实现DNS正向解析:可以解析
dns.rhce.com
www.rhce.com
dhcp.rhce.com
ftp.rhce.com
ntp.rhce.com
以及www.rhce.com的别名web.rhce.com
实验步骤:
①安装DNS服务软件包
yum install bind -y
②配置DNS主配置文件
listen-on port 53 { 192.168.233.154; }; #修改成物理网卡的IP
allow-query { 192.168.233.0/24; }; #允许哪些主机来访问
# 区域配置
zone "rhce.com" IN {
type master;
file "rhce.zone";
};
③写解析文件
主配置文件里面定义的解析文件目录是/var/named
注意文件名是rhce.zone
[root@qingyuxin ~]# vim /var/named/rhce.zone
$TTL 1D
@ IN SOA dns.rhce.com. test.163.com. (
0
1D
1H
1W
3H )
IN NS dns.rhce.com.
mail.rhce.com.
dns.rhce.com. IN A 192.168.15.130
www.rhce.com. IN A 192.168.15.132
;ftp -> ftp.rhce.com.
ftp IN A 192.168.15.133
dhcp IN A 192.168.15.134
ntp IN A 192.168.15.135
说明:
@代表zone的意思,现在@代表rhce.com.; SOA代表资源记录的名称为起始授权记录;test.163.com.表示有问题找该管理员;0代表序列号;1D代表更新频率为1天;1H代表失败重新尝试时间为1小时;1W代表失效时间为1周;3H代表缓存时间为3小时
;代表注释
④检测配置文件语法是否正确并重启服务
[root@qingyuxin ~]# named-checkconf /etc/named.conf
[root@qingyuxin ~]# named-checkzone rhce.com /var/named/rhce.zone
zone rhce.com/IN: loaded serial 0
OK
[root@qingyuxin ~]# systemctl restart named
⑤查看域名解析结果
- 配置反向解析: 对应的IP和解析成下面的域名
dns.rhce.com
www.rhce.com
dhcp.rhce.com
ftp.rhce.com
ntp.rhce.com
以及www.rhce.com的别名web.rhce.com
实验步骤:
①配置DNS主配置文件
向/etc/named.conf文件新增反向解析的配置
zone "15.168.192.in-addr.arpa" IN{ #以.in-addr.arpa结尾的是反向解析配置
type master;
file "15.168.192.zone";
};
②在/var/named目录下写解析文件
注意文件名是15.168.192.zone
[root@qingyuxin ~]# vim /var/named/15.168.192.zone
$TTL 1D
@ IN SOA dns.rhce.com. test.163.com (
0
1D
1H
1W
3H)
IN NS dns.rhce.com.
;只需要一条A记录,其他的为反解析的内容
dns.rhce.com. IN A 192.168.15.130
130 IN PTR dns.rhce.com.
131 IN PTR mail.rhce.com.
132 IN PTR www.rhce.com.
;cname: change name
web IN CNAME www
③重启服务并检测是否能够反解析
systemctl restart named
3.配置主从同步(区域传送)
要求从dns和从主DNS同步区域解析文件,
可以实现增量传送(1.修改主DNS区域解析文件的serial值比从DNS的大: 验证是否会重新同步
2.修改主DNS区域解析文件的serial值比从DNS的小:验证是否会重新同步)
实验步骤:
主服务器192.168.15.130
① 在主配置文件/etc/named.conf中新增一条信息
allow-transfer {192.168.15.0/24;}; #限定区域传送
主DNS区域解析文件的serial值是0
②重启DNS服务
[root@qingyuxin ~]# systemctl restart named
从DNS服务器 192.168.15.136
①安装DNS服务软件包
yum install bind -y
②配置DNS主配置文件/etc/named.conf
listen-on port 53 { 192.168.233.233; };
allow-query { 192.168.233.0/24; };
zone "rhce.com" IN {
type slave;
masters { 192.168.233.154; };
file "slaves/rhce.zone";
};
③重启服务并测试
systemctl restart named
查看从主服务器上面备份下来的解析文件
主从复制成功
④将从服务器的dns改成主服务器的地址
使用nslookup命令需要装包
yum install bind-utils
域名解析成功
将主服务器的dns服务停掉后,从服务器依然能够进行域名解析。
4.批量解析:解析:10.rhce.com -> 192.168.15.10
11.rhce.com -> 192.168.15.11
12.rhce.com -> 192.168.15.12
13.rhce.com -> 192.168.15.13
14.rhce.com -> 192.168.15.14
15.rhce.com -> 192.168.15.15
实验步骤:
① 主服务器,正向解析格式
[root@qingyuxin ~]# vim /var/named/rhce.zone
$GENERATE 10-20 $.rhce.com. IN A 192.168.15.$
②重启服务并测试