Linux服务篇之DNS域名解析服务

文章目录

  • 1 域名系统---DNS
    • 1.1 DNS使用的协议及端口号
    • 1.2 DNS系统的分布式数据结构
    • 1.3 DNS系统的作用及类型
    • 1.4 域名解析查询过程
    • 1.5 两种查询方式
  • 2 BIND的安装和配置文件
    • 2.1 BIND的软件包
    • 2.2 BIND主配置文件---named.conf
    • 2.3 修改主要配置文件
    • 2.4 修改区域配置文件,添加正向区域配置
    • 2.5 配置正向区域数据文件
    • 2.6 启动服务,关闭防火墙
    • 2.7 在客户端的域名解析配置文件中添加DNS服务器地址
    • 2.8 测试DNS解析
    • 2.9 正向解析服务器配置实验
    • 2.10 反向解析服务器配置实验
  • 3 使用BIND构建域名服务器
  • 3.1 DNS主从服务器实验

1 域名系统—DNS

DNS 域名系统(Domain Name System 缩写 DNS,Domain Name 被译为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

1.1 DNS使用的协议及端口号

DNS 的默认端口为53,DNS 端口分为 TCP 和 UDP

  • TCP是用来做区域传送,多用于主从同步在一个区中主DNS 服务器从自己本机的数据文件中读取该区的 DNS 数据信息,而辅助 DNS 服务器则从区的主 DNS 服务器中读取该区的 DNS 数据信息
  • UDP是用来做DNS解析的
    域名:通常由一个完全合格域名(FQDN)标识。FQDN 全称 Fully Qualified Domain Name,它能准确表示出其相对于 DNS 域树根的位置,也就是节点到 DNS 树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用 “.” 分隔,对于 DNS 域 google 来说,其完全正式域名(FQDN)为 google.com
    例如,google 为 com 域的子域,其表示方法为google.com,而 www 为 google 域中的了域,可以使用 www.google.com. 表示
  • 全域名:同时带有主机名和域名的名称
    注意:最前面的一定是主机,最后一个点表示根域,通常是省略不写的,但实际上

注意:通常,FQDN有严格的命名限制,长度不能超过 256 字节,只允许使用字符 a-z,0-9,A-Z 和减号 (-),点号 (.) 只允许在域名标志之间(例如 “google.com” )或者FQDN的结尾使用。域名不区分大小,由最顶层到下层,可以分成:根域、顶级域、二级域、子域

1.2 DNS系统的分布式数据结构

  • 大型、分布式的互联网DNS解析库
根.根域名DNS服务器:专门负责根域名

一级DNS服务器:专门负责一级域名的解析(一般代表一种类型的组织机构或国家地区)
.com(工商企业)
.net(网络供应商)
.edu(教育机构)
.cn(中国国家域名)
.org(团体组织)
gov(政府部门)

二级DNS服务器:专门负责二级域名的解析
.net.cn
.edu.cn
.com.cn

子域名DNS服务器:专门负责子域名的解析也称为三级域名
ina.com.cn
.pku.edu.cn
主机站点
tts9
tts6
mail
www

Linux服务篇之DNS域名解析服务_第1张图片

1.3 DNS系统的作用及类型

DNS系统的作用

  • 正向解析:根据域名查找对应的 IP 地址
  • 反问解析:根据 IP 地址查找对应的城名(域名的反向解析不是很常用。只在一些特殊场合才会用到,比如如可用于反垃圾邮件的验证。)

DNS系统类型

  • 缓存域名服务器
    • 也称为 DNS 高速缓存服务器,只提供域名解析结果的缓存功能
    • 通过向其他域名服务器查询获得域名->IP地址记录(没有域名数据库)
    • 将域名查询结果缓存到本地,提高重复查询时的速度
  • 主域名服务器
    • 特定 DNS 区域的权威服务器,具有唯一性
    • 负责维护该区域内所有域名->IP 地址的映射记录
    • 需要自行建立所负责区域的地址数据文件
  • 从域名服务器
    • 也称为辅助域名服务器,主域名服务器出现故障、关闭或负载过重时,从域名服务器作为备份服务提供域名解析服务
    • 其维护的域名->IP 地址记录来源于主域名服务器
    • 构建从域名服务器时,需要指定主城名服务器的位置,以便服务器能自动同步区域的地址数据库。
  • 转发域名服务器
    • 负责所有非本地域名的本地查询。
    • 转发域名服务器接到查询请求后,在其缓存中查找;如果找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止,否则返回无法映射的结果。

1.4 域名解析查询过程

(1)先查本机的缓存记录
(2)查询 hosts 文件
(3)查询 dns 主域名服务器,交给 dns 域名服务器处理
以上过程成为递归查询:我要一个答案你直接会给我结果
(4)这个 dns 服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进行下一步
(5)求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域服务器
(6)求助顶级域服务器,顶级域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器
(7)求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器
(8)本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端
	windows系统查询dns缓存命令: ipconfig /displaydns
	windows系统清理dns缓存命令: ipconfig /flushdns
	linux清dns缓存需要安装nscd软件,启动、执行nscd -i hosts

Linux服务篇之DNS域名解析服务_第2张图片
Linux服务篇之DNS域名解析服务_第3张图片

1.5 两种查询方式

  • 递归查询
    递归查询是一种 DNS 服务器的查询模式,在该模式下 DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果 DNS 服务器本地没有存储查询 DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机
    总结:客户机发送请求后自己只用等待结果即可,中间具体过程交给服务器实现
  • 迭代查询
    DNS 服务器另外一种查询方式为迭代查询,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台 DNS 服务器地址,客户机再向这台 DNS 服务器提交请求,依次循环直到返回查询的结果为止
    总结:客户机的请求需要自己挨个去查询才能得到结果,服务器没有结果时候只会给你提供其它服务器的地址,而不会帮你去请求查询,这与递归截然相反
    Linux服务篇之DNS域名解析服务_第4张图片
    从递归和迭代查询可以看出
  • 客户端—本地DNS服务器:这部分属于递归查询
  • 本地DNS服务端—外网:这部分属于迭代查询
  • 递归查询时,返回的结果只有两种:查询成功或查询失败
  • 迭代查询又称作重指引,返回的是最佳的查询点或者主机地址。

2 BIND的安装和配置文件

2.1 BIND的软件包

bind-9.9.4-37.el7.x86_64.rpm   //提供了域名服务的主要程序及相关文件
bind-utils-9.9.4-37.el7.x86_64.rpm   //提供了对 DNS 服务器的测试工具程序,如 nslookup 等
bind-libs-9.9.4-37.el7.x86_64.rpm   //提供了 bind、bind-utils 需要使用的库函数
bind-chroot-9.9.4-37.el7.x86_64.rpm   //为 BIND 服务提供一个伪装的根目录(将/var/named/chroot/文件夹 作为 BIND 服务的根目录),以提高安全性

默认已安装 bind-utils 和 bind-libs,因此只需要安装 bind 和 bind-chroot 即可

2.2 BIND主配置文件—named.conf

[root@localhost ~]# rpm -qc bind   //查询bind软件配置文件所在路径
/etc/logrotate.d/named   //主配置文件 控制系统全局
/etc/named.rfc1912.zones  //区域配置文件 控制具体单个区域 主要配置文件
/var/named/named.localhost   //区域数据配置文件 区域信息 部分配置文件

安装bind软件包
yum install bind -y (必须网络源或光盘挂载) 或rpm -ivh 前提挂载光盘(系统盘ISO镜像)

Linux服务篇之DNS域名解析服务_第5张图片

2.3 修改主要配置文件

vim /etc/named.conf
options {undefined
listen-on port 53 { 192.168.80.10; };  监听53端口,ip地址使用提供服务的本地IP,也可用any表示所有
#listen-on-v6 port 53 { ::1; };    //ipv6行若不使用可以注释掉或者删除
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 { 192.168.80.0/24; 172.16.100.0/24; };  //允许使用本DNS解析服务的网段,也可用any代表所有
}

zone "." IN {    //正向解析"."根区域
type hint;   //类型为根区域
file "named.ca";   //区域数据文件为named.ca, 
记录了13台根域服务器的域名和IP地址等信息
};

include "/etc/named. rfc1912. zones";   //包含区域配置文件里的所有配置

Linux服务篇之DNS域名解析服务_第6张图片

2.4 修改区域配置文件,添加正向区域配置

vim /etc/named.rfc1912.zones   //文件里有模版,可复制粘贴后修改
zone "benet.com" IN {   //正向解析"benet.com"区域
type master;   //类型为主区域
file "benet.com.zone";   //指定区域数据文件为benet.com.zone
allow-update { none; };
};

2.5 配置正向区域数据文件

cd /var/ named/
cp -p named.localhost benet.com.zone   //保留源文件的权限和属主的属性复制
vim /var/named/benet.com.zone
$TTL 1D    //有效解析记录的生存周期
@ in SOA benet.com. admin.benet.com. (   //"@"符号表示当前的DNS区域名
0 ; serial   //更新序列号,可以是10位以内的整数
1D ; refresh   //刷新时间,重新下载地址数据的间隔
1H ; retry   //重试延时,下载失败后的重试间隔
1W ; expire   //失效时间,超过该时间仍无法下载则放弃
3H) ; minimum   //无效解析记录的生存周期,
NS benet.com.    //记录当前区域的DNS服务器的名称
A 192.168.80.10   //记录主机IP地址

IN MX 10 mail.benet.com.   //MX为邮件交换记录,数字越大优先级越低
www IN A 192.168.80.10   //记录正向解析www.benet.com对应的IP
mail IN A 192.168.80.11   //MX为邮件交换记录,数字越大优先级低
ftp IN CNAME www   //CNAME使用别名,ftp 是www的别名

​ * IN A 192.168.80.100   //泛域名解析,"*"代表任意主机名

#"@"这里是一个变量,当前DNS区域名
#SOA记录中的更新序列号用于同步主、从服务器的区域数据,当从服务器判断区域更新时,若发现主服务器中的序列号与本地区域数据中的序列号相同,则不会进行下载。

"benet.com. "此为完全合格域名(FQDN) ,后面有个"."不能漏掉

#“admin.benet.com.”表示管理员邮箱,这里的"@"符号已有其他含义,所以用"."代替
#IN 表示internet

2.6 启动服务,关闭防火墙

systemctl start named
systemctl stop firewalld
setenforce 0

#如果服务启动失败,可以查看日志文件来排查错误
tail -f /var/log/messages
#如果服务启动卡住,可以执行下面命令解决
rndc-confgen -r /dev/urandom -a
#对域名语法进行检查(named.conf)
named-checkconf -z /etc/named.conf

2.7 在客户端的域名解析配置文件中添加DNS服务器地址

vim /etc/resolv.conf   //修改完后立即生效
nameserver 192.168.80.10
或
vim /etc/sysconfig/network-scripts/ifcfg-ens33  //修改完后需要重启网卡
DNS1=192.168.80.10
systemctl restart network

2.8 测试DNS解析

host www.benet.com
nslookup www.benet.com
ext file
lenath:11.599 lines:231
Ln:121 Co

2.9 正向解析服务器配置实验

第一步:安装并关闭防火墙

安装主软件和配置包管理软件
[root@localhost ~]# yum  install bind bind-utils -y
关闭防火墙
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0

Linux服务篇之DNS域名解析服务_第7张图片
第二步:开启服务并查看是否查看成功

[root@localhost ~]# systemctl restart named
[root@localhost ~]# netstat -ntap |grep named

Linux服务篇之DNS域名解析服务_第8张图片
第三步:修改配置文件/etc/named.conf

[root@localhost ~]# rpm -qc bind 查询安装服务的配置文件
[root@localhost ~]# vim /etc/named.conf  进入修改配置文件

Linux服务篇之DNS域名解析服务_第9张图片
第四步:编写域名,在配置文件/etc/named.rfc1912.zones下

[root@localhost named]# vim /etc/named.rfc1912.zones 
zone "fyr.com" IN {
        type master;
        file "fyr.com.zone";
        allow-update { none; };
};

Linux服务篇之DNS域名解析服务_第10张图片
第五步:切换至named文件夹,拷贝named.localhost变成根域名文件

[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
[root@localhost named]# cp -p named.localhost fyr.com.zone

Linux服务篇之DNS域名解析服务_第11张图片
第六步:修改成根域名文件

[root@localhost named]# vim fyr.com.zone

Linux服务篇之DNS域名解析服务_第12张图片
第七步:修改网卡的DNS服务地址并重启网卡

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
 
[root@localhost ~]# rndc reload(也可以实验systemctl restart network)
[root@localhost ~]# cat /etc/resolv.conf //显示当前生效的

Linux服务篇之DNS域名解析服务_第13张图片
在这里插入图片描述
第八步:测试

[root@localhost ~]# host www.fyr.com
[root@localhost ~]# host ftp.fyr.com
[root@localhost ~]# host mail.fyr.com

2.10 反向解析服务器配置实验

第一步:安装并关闭防火墙

安装主软件和配置包管理软件
[root@localhost ~]# yum  install bind bind-utils -y
关闭防火墙
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0

Linux服务篇之DNS域名解析服务_第14张图片
第二步:开启服务并查看是否查看成功

[root@localhost ~]# systemctl restart named
[root@localhost ~]# netstat -ntap |grep named

Linux服务篇之DNS域名解析服务_第15张图片
第三步:修改配置文件/etc/named.conf

[root@localhost ~]# rpm -qc bind 查询安装服务的配置文件
[root@localhost ~]# vim /etc/named.conf  进入修改配置文件

Linux服务篇之DNS域名解析服务_第16张图片
第四步:修改区域配置文件/etc/named.rfc1912.zones

[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "16.168.192.in-addr.arpa" IN {
        type master;
        file "fyr.com.zone.local";
        allow-update { none; };
};

在这里插入图片描述
第五步:切换至named文件夹,复制正向解析文件

[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
[root@localhost named]# cp -p fyr.com.zone fyr.com.zone.local

Linux服务篇之DNS域名解析服务_第17张图片
第六步:修改配置文件

[root@localhost named]# vim fyr.com.zone.local
$TTL 1D
@       IN SOA  master.fyr.com admin.fyr.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master.fyr.com.
master  A       192.168.16.16
80      PTR     www.fyr.com.
28      PTR     mail.fyr.com.
16      PTR     ftp.fyr.com.

Linux服务篇之DNS域名解析服务_第18张图片
第七步:修改网卡的DNS服务地址并重启网卡

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
 
[root@localhost ~]# systemctl restart network(rndc reload也可以重载配置文件)
[root@localhost ~]# cat /etc/resolv.conf //显示当前生效的

Linux服务篇之DNS域名解析服务_第19张图片
在这里插入图片描述
第八步:重启服务并测试

[root@localhost named]# host 192.168.16.28
[root@localhost named]# host 192.168.16.80
[root@localhost named]# host 192.168.16.16

Linux服务篇之DNS域名解析服务_第20张图片

3 使用BIND构建域名服务器

  • 构建缓存域名服务器
  • 构建主、从域名服务器

3.1 DNS主从服务器实验

实验环境
主服务器:192.168.16.16
从服务器:192.168.16.18

第一步:安装主从软件和配置包管理软件并关闭防火墙

[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install -y bind

Linux服务篇之DNS域名解析服务_第21张图片
第二步:主配置文件/etc/named.conf
配置主服务器192.168.16.16

[root@localhost ~]# vim /etc/named.conf  进入修改配置文件

Linux服务篇之DNS域名解析服务_第22张图片
第三步:修改主域名服务器区域配置文件/etc/named.rfc1912.zones

[root@localhost ~]# vim /etc/named.rfc1912.zones 
zone "fyr.com" IN {
		type master; //类型为主区域
		file "fyr.com.zone"; 和var下面地址一样
		allow-transfer { 192.168.16.18; }; //设置从服务器地址
};

Linux服务篇之DNS域名解析服务_第23张图片
第四步:配置正向区域数据文件

[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p named.localhost fyr.com.zone   //保留源文件的权限和属主的属性复制
[root@localhost named]# vim fyr.com.zone

$TTL 1D
@       IN SOA  master admin.fyr.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master
master  A       192.168.16.16
www     A       192.168.16.16
mail    A       192.168.16.28
ftp     A       192.168.16.21

Linux服务篇之DNS域名解析服务_第24张图片
第五步:从配置文件/etc/named.conf
配置从服务器192.168.16.18

[root@localhost ~]# vim /etc/named.conf  进入修改配置文件

Linux服务篇之DNS域名解析服务_第25张图片
第六步:修改从域名服务器区域配置文件/etc/named.rfc1912.zones,添加正、反区域配置

[root@localhost ~]# vim /etc/named.rfc1912.zones 
zone "fyr.com" IN {
		type slave; //类型为从区域
		file "slaves/fyr.com.zone"; //下载的区域数据文件保存到slaves/目录下
		masters { 192.168.16.16; }; //设置主服务器地址
};

Linux服务篇之DNS域名解析服务_第26张图片
第七步:从服务器复制

[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p named.localhost fyr.com.zone

在这里插入图片描述
第八步: 主、从重启动服务,并查看区域数据文件是否已下载成功

[root@localhost named]# systemctl restart named
ls -l /var/named/slaves/ 反向解析就必须要有区域文件

第九步:在客户端的域名解析配置文件中添加从DNS服务器地址并测试

[root@localhost named]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost named]# systemctl restart network

测试
[root@localhost named]# host www.fyr.com
[root@localhost named]# host mail.fyr.com
[root@localhost named]# host ftp.fyr.com

Linux服务篇之DNS域名解析服务_第27张图片
Linux服务篇之DNS域名解析服务_第28张图片
主服务器的配置
Linux服务篇之DNS域名解析服务_第29张图片

你可能感兴趣的:(Linux,linux服务,网络,DNS)