首页 > 技术文章 > DNS域名解析服务

aacoffee 2021-07-04 15:55 原文

目录:

一、BIND域名服务基础

二、BIND软件安装及实验

配置正向解析

配置反向解析

配置主从域名服务器

配置分离解析

 

 

一、 BIND域名服务基础

在日常生活中人们习惯使用域名访问服务器,但机器间互相只认IP地址,域名与IP地址之间是多对一的关系,一个ip地址不一一定只对应一个域名,且一个完整域名只可以对应一个ip地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的。

DNS的定义∶

DNS是"域名系统"的英文缩写。它作为将域名和IP地址相互映射的一个分布式数据库, 能够多使人更方便地访问 互联网。 DNS服务使用TCP和UDP的53端口,TCP的53端口用于连接DNS服务器,UDP的53端口用于解析DNS。每一级域名长度的限制是63个字符, 域名总长度则不能超过253个字符。

域名结构∶

http://wwW,sina,com,cn./

http∶ //主机名.子域.二级域.J顶级域 根域/

DNS系统的作用

正向解析∶ 根据域名查找对应的IP地址

反向解析∶ 根据IP地址查找对应的域名

DNS系统的分布式数据结构

树状结构最顶层称为根域,用"."表示, 相应服务器称为根服务器, 整个域名空间解析权都归根服务器所有, 但根服务器无法承担序大的负载,采用"委派"机制,在根域下设置 了—一些顶级域, 然后将不同顶级域解析权分别委派给相应的顶级域服务器, 如将com域的解析权委派给com域服务器, 以后但凡根服务器收到以com结尾的域名解析请求,都会转发给com域服务器,同样道理,为了减轻顶级域的压力,又下设了若干二级域,二级域又下设三级域或主机。

根域

位于域名空间最顶层,一般用一个"."表示

顶级域

一般代表一种类型的组织机构或国家地区,

如 .net(网络供应商)、.com(工商企业)、.org(团体组织)、.edu(教育机构)、.gov(政府部门)、.cn(中国国家域名)

二级域

用来标明顶级域内的一个特定的组织,国家顶级域下面的二级域名由国家网络部门统一管理,如 .cn 顶级域名下面设置的二级域名∶ .com.cn、.net.cn、.edu.cn

子域

二级域下所创建的各级域统称为子域,各个组织或用户可以自由申请注册自己的域名

主机

主机位于域名空间最下层,就是一台具体的计算机,

如 www、mail都是具体的计算机名字,可用www.sina.com.cn.、mail.sina.com.cn.来表示,这种表示方式称为 FQDN(完全合格域名),也是这台主机在域名中的全名

 

 DNS服务器类型∶

(1)主域名服务器∶ 负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源, 数据可以修改。 构建主域名服务器时, 需要自行建立所负责区域的地址数据文件。

(2) 从域名服务器∶ 当主域名服务器出现故障、关闭或负载过重时, 从域名服务器作为备份服务提供域名解析服务。 从域名服务器提供的解析结果不是由自己决定的,而是来自于主域名服务器。 构建从域名服务器时, 需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库。

(3)缓存域名服务器;只提供域名解析结果的缓存功能,目的在干提高香询速束度和效率, 但没有域名数据库。它从 某个远元程服务器取得每次域名服务器查询的结果,并将它放在高速缓存中, 以后查询相同的信息时用它予以响应。缓存域名服务器不是权威性服务器,因为提供的月有信息都是间接信息。 构建缓存域名服务器时, 必须设置根域或指定其他DNs服务器作为解析来源。

(4)转发域名服务器∶ 负责所有非本地域名的本地查询。转发域名服务器接到查询请求后, 在其缓存中查找, 如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止, 否则返回无法映射的结果。

注:DNS查询方式分为递归查询和迭代查询

二、BIND软件安装及实验

BIND(Berkeley Internet Name Daemon)

 

  • BIND是应用最广泛的DNS服务程序
  • 官方站点∶ https∶//ww.isc.org/

相关软件包

 

  • bind-9.9.4-37.el7.x86_64.rpm
  • bind-utils-9.9.4-37.el7.x86_64.rpm
  • bind-libs-9.9.4-37.el7.x86_64.rpm
  • bind-chroot-9.9.4-37.el7.x86_64.rpm

 

BIND服务器端程序

  • 主要执行程序∶ /usr/sbin/named
  • 默认监听端口∶53
  • 主配置文件:/etc/named.conf
  • 保存DNS解析记录的数据文件位于:/var/named/

BIND服务控制

systemctl [status|start|stoplrestart] named.service

 

配置正向解析

1.挂载,安装bind软件包,查看需要修改的配置文件所在路径

 1 rpm -qc bind
 2 #查询bind软件配置文件所在路径
 3 
 4 /etc/ named. conf
 5 #主配置文件
 6 
 7 /etc/ named.rfc1912.zones
 8 #区域配置文件
 9 
10 /var/named/named.localhost
11 #区域数据配置文件

2.修改主配置文件

 1 vim /etc/ named.conf
 2 options {
 3    listen-on port 53 { 192.168.80.10; };         #监听53端口,ip地址使用提供服务的本地IP,也可用any表示所有
 4    1isten-on-v6 port 53 { ::1; };              #ipv6行如不使用可以注释掉或者删除
 5 directory    "/var/named";            #区域数据文件的默认存放位置
 6 dump-file    "/var/named/data/ cache dump.db";      #域名缓存数据库文件的位置
 7 statistics-file "/var/ named/data/named_stats.txt";   #状态统计 文件的位置
 8 memstatistics-file "/var/named/data/named_mem_stats. txt";    #内存统计文件的位置
 9 allow-query    { 192.168.80.0/24; 172.16.100.0/24; }; #允许使用本DNS解析服务的网段,也可用any代表所有
10 .....
11 }
12 
13 zone "." IN {                #正向解析“."根区域
14     type hint;               #类型为根区域
15     file "named.ca";         #区域数据文件为named.ca,记录了13台根域服务器的域名和IP地址等信息
16 };
17 include "/etc/named.rfc1912.zones";      #包含区域配置文件里的所有配置

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

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

4.配置正向区域数据文件

 1 cd  /var/named/
 2 cp -p named. localhost benet. com. zone#保留源文件的权限和属主的属性复制
 3 vim /var/ named/benet .com.zone
 4 $TTL 1D#有效解析记录的生存周期
 5 @       IN SOA benet.com.admin.benet.com. (               #“@"符号表示当前的DNS区域名
 6                                       0     ; serial      #更新序列号,可以是10位以内的整数
 7                                      1D     ; refresh     #刷新时间,重新下载地址数据的间隔
 8                                      1H     ; retry       #重试延时,下载失败后的重试间隔
 9                                      1W     ; expire      #失效时间,超过该时间仍无法下载则放弃
10                                      3H )   ; minimum     #无效解析记录的生存周期
11                                     
12         NS    benet. com.                    #记录当前区域的DNS服务器的名称
13         A     192.168.80.10                  #记录主机IP地址 
14 IN   MX 10    mail.benet.com.                #Mx为邮件交换记录,数字越大优先级越低
15 www  IN A     192. 168.80.10                #记录正向解析www.benet.com对应的IP
16 mail IN A     192. 168.80.11
17 ftp  IN CNAME WWW                          #CNAME使用别名,ftp是www的别 名
18 *    IN A     192.168.80.100               #泛域名解析,“*"代表任意主机名 
19 
20 
21 #“@"这里是一个变量,当前DNs区域名
22 #SOA记录中的更新序列号用于同步主、从服务器的区域数据,当从服务器判断区域更新时,若发现主服务器中的序列号与本地区域数据中的序列号相同,则不会进行下载
23 # "benet.com.”此为完全合格域名(FQDN) ,后面有个“. "不能漏掉
24 #“admin. benet. ccm.”表示管理员邮箱,这里的“@”符号已有其他含义,所以用“."代替

5.启动服务,关闭防火墙

1 systemctl start named
2 systemctl stop firewalld
3 setenforce 0
4 
5 #如果服务启动失败,可以查看日志文件来排查错误
6 tail -f /var/log/messages
7 
8 #如果服务启动卡住,可以执行下面命令解决
9 rndc-confgen -r /dev/urandom -a

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

1 vi /etc/resolv.conf       #修改完后立即生效
2 nameserver 192.168.80.10
3 4 vi /etc/sysconfig/network-scripts/ifcfg-ens33      #修改完后需要重启网卡
5 DNS1=192.168.80.10
6 systemctl restart network

举例

安装软件包

 

 编辑主配置文件

编辑区域配置文件

 

 

 

 复制区域数据配置文件

 

编辑区域数据配置文件

 

 

 

 

测试

 

 

配置反向解析

1.挂载,安装bind软件包,查看需要修改的配置文件所在路径

 1 rpm -qc bind
 2 #查询bind软件配置文件所在路径
 3 
 4 /etc/ named. conf
 5 #主配置文件
 6 
 7 /etc/ named.rfc1912.zones
 8 #区域配置文件
 9 
10 /var/named/named.localhost
11 #区域数据配置文件

2.修改主配置文件

 1 vim /etc/ named.conf
 2 options {
 3    listen-on port 53 { 192.168.80.10; };         #监听53端口,ip地址使用提供服务的本地IP,也可用any表示所有
 4    1isten-on-v6 port 53 { ::1; };              #ipv6行如不使用可以注释掉或者删除
 5 directory    "/var/named";            #区域数据文件的默认存放位置
 6 dump-file    "/var/named/data/ cache dump.db";      #域名缓存数据库文件的位置
 7 statistics-file "/var/ named/data/named_stats.txt";   #状态统计 文件的位置
 8 memstatistics-file "/var/named/data/named_mem_stats. txt";    #内存统计文件的位置
 9 allow-query    { 192.168.80.0/24; 172.16.100.0/24; }; #允许使用本DNS解析服务的网段,也可用any代表所有
10 .....
11 }
12 
13 zone "." IN {                #正向解析“."根区域
14     type hint;               #类型为根区域
15     file "named.ca";         #区域数据文件为named.ca,记录了13台根域服务器的域名和IP地址等信息
16 };
17 include "/etc/named.rfc1912.zones";      #包含区域配置文件里的所有配置

3.修改区域配置文件,添加反向区域配置

1 vim /etc/named.rfc1912.zones    #文件里有模版,可复制粘贴后修改
2 zone "80.168.192.in-addr.arpa" IN {  ●反向解析的地址倒过来写,代表解析192.168.116段的地址
3     type master;
4     file "benet. com. zone. local";    ●指定区域数据文件为benet.com.zone.local
5     allow-update { none; } ;
6 };

4.配置反向区域数据文件

 1 cd /var/ named/
 2 cp -p named. localhost benet .com.zone.local
 3 
 4 vim /var/named/benet.com.zone.local
 5 $TTL 1D
 6 @   IN SOA benet.com.admin.benet.com. (       #这里的“@”代表192.168.116段地址
 7                                   0    ; serial
 8                                  1D    ; refresh
 9                                  1H    ; retry
10                                  1W    ; expire
11                                  3H )  ; minimum
12       NS      benet. com.
13       A       192.168.80. 10
14 200 IN PTR    WWW.benet.com.
15 100 IN PTR    mail.benet.com.
16 
17 #PTR为反向指针,反向解析192.168.80.200地址结果为www.benet.com.

注:前面配置正向解析,安装包已经装过了以及主配置文件里面也配置了,这里不需要再改主配置文件,直接到区域配置文件配置

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

 

vim /etc/named.rfc1912.zones

 配置反向区域数据文件

 

 

 

 

 

配置主从域名服务器

1.修改主域名服务器的区域配置文件,修改正、反向区域配置

 1 vim /etc/named.rfc1912.zones
 2 zone "benet.com" IN {
 3               type master;       ●类型为主区域
 4               file "benet.com.zone";
 5               allow-transfer { 192.168.80.11; } ;       ●允许从服务器下载正向区域数据,这里添从服务器的IP地址
 6 };
 7 zone "80.168.192.in-addr.arpa" IN {
 8                  type master;
 9                  file "benet. com. zone. local"; 
10                  allow-transfer { 192.168.80.11; } ;
11 };

2.修改从域名服务器的主配置文件(开启新的服务器)

 1 yum install -y bind
 2 vim /etc/named.conf
 3 options  {
 4      listen-on port 53 { 192.168.80.11; } ;    ●监听53端口,ip地址使用提供服务的本地IP即可,也可用any代表所有
 5 # listen-on-v6 port 53 { : :1; } ;
 6 directory      "/var/named" ;
 7 dump-file      "/ var/ named/ data/ cache_dump.db";
 8 statistics-file "/var/ named/ data/named_stats.txt";
 9 memstatistics-file "/var/ named/data/ named_mem_stats.txt";
10 allow-query    { any; };     ●允许使用本DNS解析服务的网段,也可用any代表所有

3.修改从域名服务器区域配置文件,添加正、反区域配置

 1 vim /etc/named.rfc1912.zones 
 2 zone "benet. com" IN {
 3      type slave;         ●类型为从区域
 4      masters { 192.168.80.10; } ;    ●指定主服务器的IP地址
 5      file "slaves/benet. com. zone";   ●下载的区域数据文件保存到slaves/目录下
 6 };
 7 zone "80.168.192.in-addr.arpa" IN {
 8     type slave;
 9     masters { 192.168.80.10; } ;
10    file "slaves/benet.com.zone.local";
11 };

4.主、从都重启动服务,并查看区域数据文件是否已下载成功

systemctl. restart named
ls -l /var/ named/ slaves/

5.在客户端的域名解析配置文件中添加从DNS服务器地址
echo “nameserver 192.168.80.11” >> /etc/ resolv . conf

举例

修改主域名服务器的区域配置文件,修改正、反向区域配置

开启一台新的虚拟机,挂载、安装软件包bind 

 

修改从域名服务器的主配置文件(开启新的服务器) 

 

 

 

 

 

 

 

测试

第三台虚拟机用于测试

 

 

 

 

配置分离解析 

分离解析的域名服务器实际也是主域名服务器,这里主要是指根据不同的客户端提供不同的域名解析记录。比如来自内网和外网的不同网段地址区域的客户机请求解析同一域名时,为其提供不同的解析结果,得到不同的IP地址

 

1.为网关服务器配置双网卡

 

在关机状态下再添加一块网卡,重启系统

ifconfig ens37 12.0.0.1/24
ifconfig

2.安装bind软件包

yum install -y bind 

3.修改主配置文件

 1 vim /etc/named.conf
 2 options {
 3         listen-on port 53 { any; } ;      #监听本机或者any
 4 #listen-on-v6 port 53 { : :1; } ;
 5 directory     " /var/ named" ;
 6 dump-file    " /var/named/data/cache_dump.db";
 7 statistics-file " /var/named/data/named_stats.txt" ;
 8 memstatistics-file "/var/named/data/named_mem_stats. txt";
 9 recursing-file " /var/named/data/named.recursing";
10 secroots-file   " /var/named/data/named.secroots";
11 allow- query   { any; };   #允许所有主机解析
12 .....
13 };
14 
15 include "/etc/named.rfc1912.zones";

4.修改区域配置文件

 1 vim /etc/named.rfc1912.zones
 2 view "lan" {                        #定义内网view,view代表容器分割
 3    match-clients { 192.168.116.0/24; } ; #匹配内网网段
 4    zone "benet.com" IN {               #设置要解析的区域
 5        type master;
 6        file "benet.com.zone.lan";          #数据配置文件
 7    };
 8   zone "." IN {                      #可将根域配置从主配置文件剪切过来,dd+p
 9       type hint;                        #hint是根区域类型
10       file "named.ca";
11    };
12 };
13 
14 view "wan" {                       #定义外网view
15    match-clients { any; } ;     #匹配除了内网网段以外的任意地址
16    zone "benet.com" IN {
17      type master;
18      file "benet. com. zone.wan";
19    };
20 };
21 
22 #注意: 一旦启用view,所有的zone必须都在view下,所以要把系统默认的自检用的zone也放在view下或者删除

5.修改区域数据配置又件

 1 cd /var/named
 2 cp -p named.localhost benet.com.zone.lan
 3 cp -P named.localhost benet.com.zone.wan
 4 
 5 vim benet.com.zone.lan
 6 $TTL 1D
 7 @        IN SOA benet.com.admin.benet.com. (
 8                                       0       ; serial
 9                                      1D        ; refresh
10                                      1H       ; retry
11                                      1W       ; expire
12                                      3H )     ; minimum
13           NS       benet.com.
14           A        192.168.80.10
15 www IN    A        192.168.80.100.   #内网主机通过解析www.benet.com的地址得到192.168.80.100
16 
17 
18 vim benet.com.zone.wan
19 STTL 1D
20 @             IN SOA benet.com.admin.benet.com. (
21                                 0               ; serial
22                                1D               ; refresh
23                                1H               ; retry
24                                1W               ; expire
25                                3H )             ; minimum
26        NS      benet . com.
27        A       12.0.0.1
28 www IN A       12.0.0.100
29 #外网主机通过解析www.benet.com的地址得到12.0.0.100

举例

两台Linux虚拟机

一台win10虚拟机【其实另外两台就是测试用的】

 

 

 

 

 

注:内网为192.168.124.10,外网为12.0.0.1 

 

 

 

 

注:一旦启用view,所有的zone必须都在view下,所以要把系统默认的自检用的zone也放在view下或者删除

 

 

 

 

 

 

外网也解析成功

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

  

 

推荐阅读