一、DNS(Domain Name System,域名系统)万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析。(正向解析)DNS协议运行在ECP/UDP协议之上,使用端口号53。
DNS系统在网络中的作用就是维护着一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客户程序提供正向或反向的地址查询服务,即正向解析与反向解析。.
>正向解析:根据域名查IP地址,即将指定的域名解析为相对应的IP地址。域名的正向解析是DNS服务器最基本的功能,也是最常用的功能。..
>反向解析:根据IP地址查域名,即将指定的IP地址解析为相对应的域名。域名的反向解析不是很常用,只在一些特殊场合才会用到,如可用于反垃圾邮件的验证。
>正向解析:根据域名查IP地址,即将指定的域名解析为相对应的IP地址。域名的正向解析是DNS服务器最基本的功能,也是最常用的功能。..
>反向解析:根据IP地址查域名,即将指定的IP地址解析为相对应的域名。域名的反向解析不是很常用,只在一些特殊场合才会用到,如可用于反垃圾邮件的验证。
域名解析流程:
1,浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,如果有,解析结束。同时域名被缓存的时间也可通过TTL属性来设置。
2,如果浏览器缓存中没命中,浏览器会检查操作系统缓存中有没有对应的已解析过的结果。而操作系统也有一个域名解析的过程。在windows中可通过。盘里hosts文件来设置,如果你在这里指定了一个域名对应的ip.地址,那浏览器会首先使用这个IP地址。但是这种操作系统级别的域名解析规程也被很多黑客利用,通过修改你的hosts文件里的内容把特定的域名解析到他指定的ip地址上,造成所谓的域名劫持。所以在windows7中将hosts文件设置成了readonly,防止被恶意篡改。.
3,如果至此还没有命中域名,才会真正的请求本地域名服务器(LDNS)来解析这个域名,这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。.
4,如果LDNS仍然没有命中,就直接跳到根域名服务器请求解析.
5,根域名服务器返回给LDNS一个所查询域的主域名服务器(GTLD Server,国际顶尖域名服务器如.com.cn.org等)地址。
6,此时LDNS再发送请求给上一步返回的CTLD.
7,接受请求的GTLD查找并返回这个域名对应的Name Server的地址,这个Name Server就是网站注册的域名服务器。+
8,Name Server根据映射关系表找到目标ip,返回给LDNS。
9,LDNS缓存这个域名和对应的ip..
10,LDNS把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程完毕。
二、安装和控制DNS服务器:
1.安装BIND软件。
在Centos7.x系统中,系统光盘自带了BIND服务的多个安装文件,各软件包的主要作用如下。
bind:提供了域名服务的主要程序及相关文件。
bind-utils:提供了对DNS服务器的测试工具程序,如nslookup等。
bind-libs:提供了bind,bind-utils需要使用的库函数。
bind-chroot:可选软件包,为BIND服务提供一个伪装的根目录(将/var/named/chroot/文件夹作为BIND的根目录),以提高安全性。也称为jail(监牢)机制.
#前三个是必须装的软件。
在Centos7.x系统中,系统光盘自带了BIND服务的多个安装文件,各软件包的主要作用如下。
bind:提供了域名服务的主要程序及相关文件。
bind-utils:提供了对DNS服务器的测试工具程序,如nslookup等。
bind-libs:提供了bind,bind-utils需要使用的库函数。
bind-chroot:可选软件包,为BIND服务提供一个伪装的根目录(将/var/named/chroot/文件夹作为BIND的根目录),以提高安全性。也称为jail(监牢)机制.
#前三个是必须装的软件。
yum -y install bind
#默认已安装bind-utils和bind-libs,所以只需要安装bind即可。
!!!!!!!!!!!!!!!!!!!
服务名是“named” 和软件名称不一样!
启动服务: systemctl start named
#默认已安装bind-utils和bind-libs,所以只需要安装bind即可。
!!!!!!!!!!!!!!!!!!!
服务名是“named” 和软件名称不一样!
启动服务: systemctl start named
2.BIND服务的配置文件。
(1)主配置文件: /etc/named.conf
(2)区域配置文件: /var/named
主配置文件:
主配置文件named.sonf通常位于etc 目录下,在naned.eonf、文件中,主要包括全局配置、区域配置两个部分,每一条配置记录的行尾以分号";"表示结束,以“#”号或者"//"开始的部分表示注释文字(大段注释可以使用"/*......*/"的格式)。.
vim /etc/named.conf
options {
listen-on port 53 { 127.0.0.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; }; //允许使用本DNS服务器的网段
recursion yes;
};
(1)主配置文件: /etc/named.conf
(2)区域配置文件: /var/named
主配置文件:
主配置文件named.sonf通常位于etc 目录下,在naned.eonf、文件中,主要包括全局配置、区域配置两个部分,每一条配置记录的行尾以分号";"表示结束,以“#”号或者"//"开始的部分表示注释文字(大段注释可以使用"/*......*/"的格式)。.
vim /etc/named.conf
options {
listen-on port 53 { 127.0.0.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; }; //允许使用本DNS服务器的网段
recursion yes;
};
区域配置部分
区域配置参数使用"zone...... {}; "的配置格式,一台DNS服务器可以为多个区域提供解析,因此在naned.conf文件中也可以有很多个zone配置段。区域类型按照解析方向可分为正向区域、反向区域。.
vim named.conf.
.......
zone"crushlinux.com"IN{ //正向"crushlinux.com"区域
type master; //类型为主区域.
file "crushlinux.zheng" //区域数据文件为crushlinux.com.zone.
allow-transfer{192.168.200.112;}; //允许下载的从服务器地址
};
zone"200.168.192.in-addr.arpa" IN { //反向"192.168.200.0/24"区域
type master;
file "crushlinux.fan";
};
type master;
file "crushlinux.fan";
};
主配置文件写完之后,可以使用下面命令验证主配置文件的正确性。
named-checkconf -z /etc/named.conf
构建主DNS域名解析服务器。
确认本机的网络地址、主机映射、默认DNS服务器地址。
yum -y install bind bind-utils bind-libs
cat /etc/resolv.conf
nameserver 192.168.200.181
nameserver 192.168.200.182
cat /etc/hosts
192.168.200.181 ns1.crushlinux.com
192.168.200.182 ns2.crushlinux.com
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; };
};
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; };
};
之后配置区域配置文件。
cat /var/named/crushlinux.zheng
$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.
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
* IN A 192.168.200.111
ftp IN CNAME www
cat /var/named/crushlinux.zheng
$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.
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
* IN A 192.168.200.111
ftp IN CNAME www
反向区域文件:
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.
111 IN PTR ns1.crushlinux.com.
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.
111 IN PTR ns1.crushlinux.com.
chown :named /var/named/crushlinux.* 修改区域配置文件的属组。
named-checkconf -z /etc/named.conf 检查主配置文件。
named-checkzone crushlinux.com /var/named/crushlinux.zheng
named-checkzone crushlinux.com /var/named/crushlinux.fan #检查正反区域数据文件。
确认无错后启动DNS。
systemctl start named
named-checkconf -z /etc/named.conf 检查主配置文件。
named-checkzone crushlinux.com /var/named/crushlinux.zheng
named-checkzone crushlinux.com /var/named/crushlinux.fan #检查正反区域数据文件。
确认无错后启动DNS。
systemctl start named
构建从DNS域名解析服务器
cat /etc/resolv.conf
nameserver 192.168.200.111
nameserver 192.168.200.112
cat /etc/hosts
192.168.200.111 ns1.crushlinux.com
192.168.200.112 ns2.crushlinux.com
cat /etc/named.conf
options {
directory "/var/named";
};
zone "crushlinux.com" IN {
type slave;
file "slaves/crushlinux.zheng"; #会在/var/named/出现slaves的文件。
masters { 192.168.200.111; }; #指定主服务器的地址。
};
zone "200.168.192.in-addr.arpa" IN {
type slave;
file "slaves/crushlinux.fan";
masters { 192.168.200.111; };
};
保存退出
systemctl restart named #启动从的DNS服务
cat /etc/resolv.conf
nameserver 192.168.200.111
nameserver 192.168.200.112
cat /etc/hosts
192.168.200.111 ns1.crushlinux.com
192.168.200.112 ns2.crushlinux.com
cat /etc/named.conf
options {
directory "/var/named";
};
zone "crushlinux.com" IN {
type slave;
file "slaves/crushlinux.zheng"; #会在/var/named/出现slaves的文件。
masters { 192.168.200.111; }; #指定主服务器的地址。
};
zone "200.168.192.in-addr.arpa" IN {
type slave;
file "slaves/crushlinux.fan";
masters { 192.168.200.111; };
};
保存退出
systemctl restart named #启动从的DNS服务
三、构建分离解析域名服务器。
和DNS服务器区别在于针对不同的局域网访问输出不同的解析结果。
修改/etc/named.conf主配置文件中为不同网络的客户机地址准备不同的1.zone区域设置,各自使用独立的数据文件
vi /etc/named.conf
options {
directory "/var/named";
};
view "LAN" { //view定义一个局域网。
match-clients { 192.168.200.0/24; }; //匹配局域网(200网段)的客户端
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.lan";
};
};
view "WAN" {
match-clients { any; }; //匹配互联网(any指所有)的客户端
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.wan";
};
};
2.分别建立不同的区域数据文件。
cd /var/named/
vi crushlinux.zheng.lan
$TTL 86400
@ IN SOA crushlinux.com. admin.crushlinux.com. (
2019011001
3H
15M
1W
1D
)
IN NS ns.crushlinux.com.
ns IN A 192.168.200.111
www IN A 192.168.200.112
mail IN A 192.168.200.113
cd /var/named/
vi crushlinux.zheng.lan
$TTL 86400
@ IN SOA crushlinux.com. admin.crushlinux.com. (
2019011001
3H
15M
1W
1D
)
IN NS ns.crushlinux.com.
ns IN A 192.168.200.111
www IN A 192.168.200.112
mail IN A 192.168.200.113
vi crushlinux.zheng.wan
$TTL 86400
@ IN SOA crushlinux.com. admin.crushlinux.com. (
2019011001
3H
15M
1W
1D
)
IN NS ns.crushlinux.com.
ns IN A 172.16.1.1
www IN A 172.16.1.1
mail IN A 172.16.1.1
$TTL 86400
@ IN SOA crushlinux.com. admin.crushlinux.com. (
2019011001
3H
15M
1W
1D
)
IN NS ns.crushlinux.com.
ns IN A 172.16.1.1
www IN A 172.16.1.1
mail IN A 172.16.1.1
chgrp named crushlinux.zheng.* #将两个文件的属组修改为named。
systemctl restart named #重启服务
systemctl restart named #重启服务
3.DNS view的多种应用方式:
(1)match-clients直接指定地址
vi /etc/named.conf
options {
directory "/var/named";
};
view "LAN" {
match-clients { 192.168.200.0/24; }; //匹配局域网的客户端
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.lan";
};
};
view "WAN" {
match-clients { any; }; //匹配互联网的客户端
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.wan";
};
};
(2)基于acl访问控制列表
vi /etc/named.conf
options {
directory "/var/named";
};
acl lan { 192.168.200.0/24; }; //先定义一个局域网
acl wan { any; };
view "LAN" {
match-clients { lan; }; //在这儿直接引用上面定义的局域网
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.lan";
};
};
view "WAN" {
match-clients { wan; }; //匹配互联网的客户端
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.wan";
};
};
(3)基于访问控制文件
vi /var/named/lan.txt //创建一个文件,内容为定义一个局域网,局域网可写多个网段。
acl lan {
192.168.200.0/24;
};
vi /var/named/wan.txt //创建一个文件,内容为定义一个局域网,局域网可写多个网段。
acl wan {
any;
};
vim /etc/named.conf
options {
directory "/var/named";
};
include "/var/named/lan.txt"; //直接应用所写的文件来定义。
include "/var/named/wan.txt";
view "LAN" {
match-clients { lan; };
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.lan";
};
};
view "WAN" {
match-clients { wan; };
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.wan";
};
};
(1)match-clients直接指定地址
vi /etc/named.conf
options {
directory "/var/named";
};
view "LAN" {
match-clients { 192.168.200.0/24; }; //匹配局域网的客户端
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.lan";
};
};
view "WAN" {
match-clients { any; }; //匹配互联网的客户端
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.wan";
};
};
(2)基于acl访问控制列表
vi /etc/named.conf
options {
directory "/var/named";
};
acl lan { 192.168.200.0/24; }; //先定义一个局域网
acl wan { any; };
view "LAN" {
match-clients { lan; }; //在这儿直接引用上面定义的局域网
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.lan";
};
};
view "WAN" {
match-clients { wan; }; //匹配互联网的客户端
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.wan";
};
};
(3)基于访问控制文件
vi /var/named/lan.txt //创建一个文件,内容为定义一个局域网,局域网可写多个网段。
acl lan {
192.168.200.0/24;
};
vi /var/named/wan.txt //创建一个文件,内容为定义一个局域网,局域网可写多个网段。
acl wan {
any;
};
vim /etc/named.conf
options {
directory "/var/named";
};
include "/var/named/lan.txt"; //直接应用所写的文件来定义。
include "/var/named/wan.txt";
view "LAN" {
match-clients { lan; };
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.lan";
};
};
view "WAN" {
match-clients { wan; };
zone "crushlinux.com" IN {
type master;
file "crushlinux.zheng.wan";
};
};