第六章:DNS域名解析服务器
1、DNS简介
DNS(Domain Name System)是互联网上的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。
(1)域名服务器的类型划分
顶级域名分为国家顶级域名、通用顶级域名、基础结构域名
-
国家顶级域名:采用ISO3166的规定。如:cn代表中国,us代表美国,uk代表英国,等等。国家域名又常记为ccTLD(country code top-level domains,cc表示国家代码contry-code)。
-
通用顶级域名:最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。
-
基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名。
完全限定域名:<www.81.mil.cn>. 末尾必须要写"."
(2)作用
-
将域名解析成IP地址 正向解析 比如:访问网站时的服务器
-
将IP地址解析成域名 反向解析 比如:邮件服务器
域名服务器划分为以下类型:
-
根域名服务器:最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。
-
顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名。
-
权限域名服务器:负责一个"区"的域名服务器。
-
本地域名服务器:本地域名服务器不属于域名服务器的层次结构,但是它对域名系统非常重要。当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。
-
主从DNS服务器:缓解主服务器的压力,作用和主服务器一样
-
缓存DNS服务器:不负责解析域,只是缓存域名解析的结果。
2、DNS域名解析流程
(1)客户端在web浏览器的网址上输入域名(<www.qq.com>),如果访问过该网站则直接显示;如果没有那么需要做解析
(2)操作系统先查看本机的hosts文件是否有该域名对应的IP地址,若有则直接访问网站
(3)若没有则查看DNS解析器缓存是否有该网址映射关系,如果有,则直接返回
(4)如果hosts和DNS解析器缓存都没有,则找本地DNS服务器,本地DNS服务器会先看DNS服务器缓存,如果有则直接返回给客户端,如果没有则会看自己是不是某个区域的服务器(看自己能不能解析域名)
(5)如果本地DNS服务器本地区域文件与缓存解析都失效,则本地DNS服务器会找根域名解析服务器,根域名解析服务器会回复可以找.com顶级域名服务器;本地DNS服务器就去找.com顶级域名服务器,.com顶级域名服务器会回复可以找qq.com二级域名服务器;本地DNS服务器就去找qq.com二级域名服务器,qq.com二级域名服务器发现刚好是自己的区域,返回该域名对应的IP地址给本地DNS服务器
(6)本地DNS服务器先缓存一下,再将IP地址返回给客户端,客户端就可以访问网站
3、DNS服务器配置
(1)基本配置
bash
提供DNS服务的软件叫bind,服务名是named。
[root@localhost ~]# yum install bind -y
[root@localhost ~]# rpm -ql bind
/etc/named.conf # bind主配置文件 存放监听
/var/named/ # 从dns服务器文件夹 存放解析文件 具体名字由zone里的file决定
[root@localhost ~]# vim /etc/named.conf
options {
#定义监听端口,如果所有地址都监听,则只写端口
listen-on port 53 { any; }; 可以写IP地址,也可以写any(任何)
listen-on-v6 port 53 { ::1; }; #ipv6
#定义数据文件目录
directory "/var/named";
#只允许本地主机进行查询
allow-query { localhost; }; #可以不写,默认"any"
};
#定义区域
zone "." IN { #"."根域
type master; 类型:master/slave
file "named.ca"; 文件名
};
(2)实验1:配置DNS正向解析
bash
[root@localhost ~]# cat /etc/named.conf
options {
listen-on port 53 {any;};
directory "/var/named";
allow-transfer {192.168.59.142;};
};
zone "baidu.com" IN {
type master;
file "named.baidu.com";
};
扩展:
vim 清空内容
(1)d
(2)d + G
(3)echo > 文件名
正向解析文件资源记录(RR),相关信息:
bash
[root@localhost ~]# cat /var/named/named.baidu.com
$TTL 1D
baidu.com. IN SOA master.baidu.com. admin.baidu.com. (
当前域的主dns服务器的域名 Email
完全限定域名(fqdn):www.81.mil.cn. 末尾必须要写"."
10271430 序号(最长8位)信息更新则序号需要改大;序号越大,信息越新
1D 更新频率 从服务器向主服务器更新
1H 重新重新尝试时间(Slave会尝试重新连接到Master)
1W 失效时间 连续问都没有回答,则一周就把从的记录都删掉
3H ) 缓存时间TTL
IN NS master.baidu.com.
IN NS slave.baidu.com. #从服务器
master.baidu.com. IN A 192.168.59.143
slave IN A 192.168.59.142
www.baidu.com. IN A 192.168.59.1
xixi IN A 192.168.59.2
haha IN A 192.168.59.3
若行之间写了时间,那么以中间的时间为先
[root@localhost ~]# systemctl restart named
[root@localhost ~]# systemctl disable firewalld --now
测试:
bash
三种测试方法:
[root@client ~]# host www.baidu.com 192.168.59.142
[root@client ~]# nslookup www.baidu.com 192.168.59.142
[root@client ~]# dig -t A @192.168.59.142 www.baidu.com
(3)反向解析
bash
[root@localhost ~]# cat /etc/named.conf
options {
listen-on port 53 {any;};
directory "/var/named";
allow-transfer {192.168.59.142;};
};
#正向解析
zone "baidu.com" IN {
type master;
file "named.baidu.com";
};
#反向解析
zone "59.168.192.in-addr.arpa" IN {
type master;
file "named.192.168.59";
};
[root@localhost ~]# cat /var/named/named.192.168.59
$TTL 1D
59.168.192.in-addr.arpa. IN SOA master.baidu.com. admin.baidu.com. ( 10271430 1D 1H 1W 3H )
IN NS master.baidu.com.
143 IN PTR master.baidu.com.
1 IN PTR www.baidu.com.
2 IN PTR xixi.baidu.com.
3 IN PTR haha.baidu.com.
反向
三种测试方法:
[root@localhost ~]# host 192.168.59.1 192.168.59.143
[root@localhost ~]# nslookup 192.168.59.1 192.168.59.143
[root@localhost ~]# dig -x 192.168.59.1 @192.168.59.143
(4)主从DNS服务器
[1]完全区域传送:复制整个区域文件
以正向解析为例,主服务器如上
从服务器:
bash
从服务器:
[root@client ~]# cat /etc/named.conf
options {
listen-on port 53 {any;};
directory "/var/named";
};
zone "baidu.com" IN {
type slave;
file "slaves/named.baidu.com";
masters {192.168.59.143;};
};
测试:
[root@localhost ~]# host www.baidu.com 192.168.59.142
[2]增量区域传送:仅复制区域里变化的文件
在修改主服务器的区域配置文件后,确保序号比之前的序号大
注:区域文件里面必须要写从服务器的NS和A记录