一、DNS 系统的作用
1、DNS服务器概述
FQDN格式(完整域名格式):在常见域名后添加 "." (根域)。列如:www.baidu.com.
DNS系统在网络中的作用就是维护着一个地址数据库,其中记录了各种主机域名;与IP地址的对应关系,以便为客户程序
提供正向或反向的地址查询服务,即正向解析与反向解析。
(1)正向解析:根据域名查IP地址,是DNS服务最常用的基本功能
(2)反向解析:根据IP地址查域名,不是很常用,应用于例如反垃圾邮件的验证等
每台DNS服务器都负责管理一个有限范围(一个或几个域)内的主机域名和IP地址的对应关系,这些特定的DNS域或IP地址
称为 " zone "(区域)。
主机名结构
主机名.二级域名.顶级域名.(根域)
2、DNS服务器的常见分类
根据地址解析的方向不同,DNS区域相应的分为正向区域(包含域名到IP地址的解析记录)和反向区域(包含IP地址到域名的解析记录)。
根据管理的区域地址数据的来源不同,DNS系统可以分为不同的类型:
(1)缓存域名服务器
只提供域名解析结果的缓存功能,目的在于提高数据查询速度和效率,但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置
根域或指定其他DNS服务器作为解析来源。
(2)主域名服务器
维护某一个特定DNS区域的地址数据库,对其中的解析纪录具有自主控制权,是指定区域中唯一存在的权威服务器、官方服务器。构建主域名服务器时,
需要自行建立所有负责区域的地址数据文件。
(3)从域名服务器
与主域名服务器提供完全相同的DNS解析服务,通常用于DNS服务器的热备份。对客户机来说,无论使用主域名服务器还是从域名服务器,查询结果
都是一样的。
PS:同一台DNS服务器,可以是 " .chinaunix.net " 区域的主域名服务器,同时也可以是 " .cublog.cn " 区域的从域名服务器。
3、DNS服务器的查询模式
(1)DNS服务器递归查询:当客户机向DNS服务器发出解析请求,DNS服务器从服务器本地的唯高速缓存中查询出结果,反馈给客户机,此过程称为
递归查询,即Client-Server。
(2)DNS服务器迭代查询:当客户机向DNS服务器发出解析请求,DNS服务器从服务器本地的唯高速缓存中查询发现没有结果,此时该DNS服务器以
DNS客户的身份向其他DNS服务器发送解析请求或向根域名服务器发送请求,此过程称为迭代查询,即Server-Server。
PS:DNS协议运行在TCP/UDP协议上,端口:TCP/UDP 53 端口 。
4、DNS解析过程
1、浏览器先检查自身缓存中有没有被解析过的这个域名对应的IP地址,如果有,解析结束。同时域名被缓存的时间也可通过TTL属性来重置。
2、如果浏览器缓存中没命中,浏览器会检查操作系统缓存中有没有对应的已解析过的结果。而操作系统也有一个域名解析的过程。在 windows 中可通过 c 盘里 hosts 文件来设置,
如果你在这里指定了一个域名对应的IP地址,那浏览器会首先使用这个IP地址。但是这种操作系统级别的域名解析规程也被很多黑客利用。通过修改你的 hosts 文件里的内容把特定
的域名解析到他指定的IP地址上,造成所谓的域名劫持。所以在 windows7 中将 hosts 文件设置成了 readonly,防止被恶意篡改。(Windows C盘/windows/system32/drivers/etc/hosts)
3、如果至此还没有命中域名,才会真正的请求本地域名服务器(LDNS)来解析这个域名,这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,
一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。
4、如果 LDNS 仍然没有命中,就直接跳到根域名服务器请求解析。
5、根域名服务器返回给 LDNS 一个所查询域的主域名服务器(GTLD Server, 国际顶尖域名服务器,如 .com 、.cn、.org等)地址。
6、此时 LDNS 再发送请求给上一步返回的 GTLD 。
7、接受请求的 GTLD 查找并返回这个域名对应的 Name Server 的地址,这个 Name Server 就是网站注册的域名服务器。
8、Name Server 根据映射关系表找到目标IP,返回给 LDNS。
9、LDNS 缓存这个域名和对应的IP。
10、LDNS 把解析的结果返回给用户,用户根据 TTL 值缓存到本地系统缓存中,域名解析过程完毕。
二、BIND 的安装和控制
1、RPM 包的主要作用
bind:提供了域名服务器的的主要的程序与相关文件
bind-utils:提供了对 DNS 服务器的测试工具程序,如 nslookup 等
bind-libs:提供了 bind、bind-utils 需要使用的库函数
bind-chroot:为 BIND 服务提供一个伪装的根目录(将/var/named/chroot文件夹作为 BIND 的根目录)以提高安全性。
也称为 jail(监牢)机制。(没什么用,可选软件包)
BIND 安装以后,会自动增加一个名为 named 的系统服务
2、主配置文件 /etc/named.conf
[root@localhost ~]vi /etc/named.conf
"/etc/named.conf" 18L, 430C
options {
listen-on port 53 { 192.168.66.13; };
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
recursion yes;
};
zone "." IN {
type hint;
file "named.ca";
};
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ :wq "/etc/named.conf" 18L, 430C written
[root@localhost ~]# named-checkconf /etc/named.conf
[root@localhost ~]#
[root@localhost ~]# cat /etc/named.conf
options {
directory "/var/named";
};
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng";
allow-transfer { 192.168.200.112; };
};
zone "200.168.192.in-addr.arpa" IN {
type master;
file "crushlinux.fan";
allow-transfer { 192.168.200.112; };
};
[root@localhost ~]# named-checkconf /etc/named.conf //检查语法
3、区域数据文件
区域文件用于存放某个DNS区域的地址解析记录(正向或方向记录)
(1)正向区域文件
[root@localhost ~]# cat /var/named/crushlinux.zheng
$TTL 86400
@ IN SOA crushlinux.com. admin.crushlinux.com. (
20190817 // serial 序号
3H // refresh 更新间隔时间
15M // retry 更新失败再次尝试的间隔时间
1W // expire 若一直失败,尝试1周后放弃
1D // minimum 失败解析记录缓存时间
)
IN NS ns1.crushlinux.com.
IN NS ns2.crushlinux.com.
IN MX 10 mail.crushlinux.com.
ns1 IN A 192.168.200.111
ns2 IN A 192.168.200.112
mail IN A 192.168.200.113
www IN A 192.168.200.114
study IN A 192.168.200.115
* IN A 192.168.200.111
ftp IN CNAME www
(2)反向区域文件
[root@localhost ~]# cat /var/named/crushlinux.fan
$TTL 86400 管理员邮箱
@ IN SOA crushlinux.com. admin.crushlinux.com. (
20190817
3H
15M
1W
1D
)
IN NS ns1.crushlinux.com.
IN NS ns2.crushlinux.com.
IN MX 10 mail.crushlinux.com.
111 IN PTR ns1.crushlinux.com.
112 IN PTR ns2.crushlinux.com.
113 IN PTR mail.crushlinux.com.
114 IN PTR www.crushlinux.com.
115 IN PTR study.crushlinux.com.
111 IN PTR ns1.crushlinux.com.
(3)区域数据文件修改后检查更新
[root@localhost ~]# named-checkzone 域名 区域数据文件的路径
[root@localhost ~]# named-checkzone crushlinux.com /var/named/crushlinux.zheng
[root@localhost ~]# named-checkzone crushlinux.com /var/named/crushlinux.fan
(4)区域数据配置文件的特殊应用
1>基于域名解析的负载均衡
同一域名可以对应到多个IP地址 //缓解单个服务器的压力
2>泛域名解析
找不到精确对应的 A 记录时,使用 “ * ” 进行匹配