目录

  • 前言
  • 一、BIND 域名服务基础
  • 1.1 DNS 系统的作用及类型
  • 1.1.1 DNS系统的作用
  • 1.1.2 DNS 系统的类型
  • 1.2 BIND的安装文件
  • 1.3 BIND的配置文件
  • 1.3.1 named.conf主配置文件
  • 1.3.2 区域数据配置文件
  • 1.3.3 区域数据配置文件的特殊应用
  • 1.3.4 对配置文件进行语法检查
  • 二、使用BIND构建域名服务器
  • 2.1 实验环境
  • 2.2 20.0.0.11配置
  • 2.3 20.0.0.12配置
  • 2.4 20.0.0.13配置


前言

  • 域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成
  • 域名解析也叫域名指向、服务器设置、域名配置以及反向IP登记等等。说得简单点就是将好记的域名解析成IP,服务由DNS服务器完成,是把域名解析到一个IP地址,然后在此IP地址的主机上将一个子目录与域名绑定
  • 互联网中的地址是数字的IP地址,域名解析的作用主要就是为了便于记忆

一、BIND 域名服务基础

  • DNS服务软件BIND(Berkeley Internet Name Domain,伯克利因特网域名)
  • 服务:可通俗理解为主配置文件+运行脚本

1.1 DNS 系统的作用及类型

1.1.1 DNS系统的作用

  • DNS 系统在网络中的作用就是维护一个地址数据库,其中记录了各种主机域名与 IP 地址的对应关系,以便为客户程序提供正向或反向的地址查询服务,即正向解析与反向解析
  • 正向解析:根据域名查 IP 地址,即将指定的域名解析为相对应的 IP 地址。域名的正向解析是 DNS 服务器最基本的功能,也是最常用的功能
  • 反向解析:根据 IP 地址查域名,即将指定的 IP 地址解析为相对应的域名。域名的反向解析不是很常用,只在一些特殊场合才会用到,比如可用于反垃圾邮件的验证
  • DNS系统的分布式数据结构
  • 以www.sina.com.cn为例:

部分

解释

www

主机位

sina

二级域名

com.cn

顶级域名

.

根域名

1.1.2 DNS 系统的类型

  • 实际上,每一台DNS服务器都只负责管理一个有限范围(一个或几个域)内的主机域名和IP地址的对应关系,这些特定的DNS域或IP地址段称为“zone”(区域)
  • 根据地址解析的方向不同,DNS区域相应地分为正向区域(包含域名到IP地址的解析记录,)和反向区域(包含IP地址到域名的解析记录)
  • 根据所管理的区域数据的来源不同,DNS系统可以分为不同的类型。
  • 在同一台DNS服务器中,相对于不同的区域来说,也拥有不同的身份。
  • 常见的几种类型
  • 缓存域名服务器
  • 只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。
  • 构建缓存域名服务器时,必须设置根域或者指定其他DNS服务器作为解析来源
  • 主域名服务器
  • 维护某一个特定DNS区域的地址数据库,对其中的解析记录具有自主控制权,是指定区域中唯一存在的权威服务器,官方服务器。
  • 构建主域名服务器时,需要自行建立所负责区域的地址数据文件
  • 从域名服务器
  • 与主域名服务器提供完全相同的DNS解析服务,通常用于DNS服务器的热备份
  • 构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库

1.2 BIND的安装文件

  • BIND不是唯一能够提供域名服务的DNS服务程序,但它却是应用最为广泛的,BIND可以运行在大多数Linux/UNIX主机中
  • BIND
    伯克利Internet域名服务
    官方站点:https://www/isc/org/
    可以直接使用yum安装
  • 相关软件包

软件包

作用

bind

提供了域名服务的主要程序及相关文件

bind-utils

提供了对DNS服务器的测试工具,如nslookup等

bind-libs

提供了bind,bind-utils需要使用的库函数

bind-chroot

为BIND服务提供一个伪装的根目录(/var/named/chroot)以提高安全性

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

1.3 BIND的配置文件

[root@localhost ~]# rpm -qc bind		'查看配置文件位置'
/etc/logrotate.d/named
/etc/named.conf
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback

1.3.1 named.conf主配置文件

  • 全局配置部分
  • 设置DNS服务器的全局参数
  • 包括监听地址/端口,数据文件的默认位置等
  • 使用options{…};的配置段
[root@localhost ~]# vim /etc/named.conf
options {
    listen-on port 53 { any; };		'ipv4 监听地址和端口 {一般更改为any}'
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";		'区域数据文件的默认存放位置'
       ...省略内容
        allow-query     { any; };		'允许使用本DNS服务的网段:{一般更改为any}'
}
  • 区域配置部分
  • 设置本服务器提供域名解析的特定DNS区域
  • 包括域名,服务器角色,数据文件名等
  • 使用zone“区域名”IN{…};的配置段
[root@localhost ~]# vim /etc/named.rfc1912.zones 
正向解析
zone "kgc.com" IN {
        type master;
        file "kgc.com.zone";
        allow-transfer { 20.0.0.12; };
        also-notify { 20.0.0.12; };
};
zone "0.0.20.in-addr.arpa" IN {
        type master;
        file "20.0.0.arpa";
        allow-transfer { 20.0.0.12; };
        also-notify { 20.0.0.12; };
};



##设置DNS服务器的全局参数
##包括监听地址和端口、区域数据文件存放的目录
##使用options {......};的配置段

1.3.2 区域数据配置文件

  • 全局TTL配置项及SOA记录
  • $TTL(Time To Live,生存时间)记录
  • SOA(Start Of Authority,授权信息开始)记录
  • 分号“;”开始的部分表示注释信息
$TTL 1D		'有效解析记录的生存周期'
@       IN SOA  @ rname.invalid. (		'SOA标记,域名,管理邮箱'
                                        2011030502  	'更新序列号,可以是10位以内的整数'   	
                                        1D     '无效解析记录的生存周期'  
                                        1W    	'失效时间,超过改时间仍无法下载则放弃'
                                        3H )    '刷新时间,重新下载地址数据的间隔'
     
M  分
H  时
W  周
D  天
  • 域名解析记录
  • 地址解析记录用来设置DNS区域内的域名,IP地址印社关系,包括正向解析记录和反向解析记录
  • NS域名服务器(Name Server )记录
  • MX 邮件交换(Mail Exchange)记录
  • A 地址 (Address)记录,只用在正向解析区域中
  • CNAME别名(Canonical Name)记录
@		IN		NS		ns1.bdqn.com.	'当前区域DNS服务器的'
		IN		MX 10	mail.bdqn.com.
ns1		IN		A		65.65.656.56
www		IN		A		2.2.2.2
mail	IN 		A		5.5.5.5
ftp		IN		CNAME	www
*		IN 		A		3.3.3.3		'泛域名解析,未匹配到的主机头到到此地址'
  • 反向区域数据文件
  • 在反向区域数据文件中,不会用到A地址记录,而是使用PTR指针(point)记录
  • 例如,对于反向区域10.168.192.in-addr.arpa,添加的反向解析记录可以是以下形式
1 IN PTR www.eee.com.		'表示IP地址为192.168.192.1的主机的域名时www.eee.com'
5 IN PTR mail.eee.com.		'表示IP地址为192.168.192.5的主机的域名时mail.eee.com'

1.3.3 区域数据配置文件的特殊应用

  • 基于域名解析的负载均衡
  • 同一域名对应到多个IP地址
  • 泛域名解析
  • 找不到精确对应的A记录时,使用“*”进行匹配
www 		IN		A		20.0.0.13		'轮询负载均衡'
www 		IN		A		20.0.0.14
www 		IN		A		20.0.0.15
*			IN		A		20.0.0.16	'泛域名解析'

1.3.4 对配置文件进行语法检查

  • 修改完区域数据文件以后,可以执行named-checkconf命令对该文件进行语法检查
  • 若zone文件中没有语法错误,系统将给出“OK”的提示信息
named-checkconf工具基本格式
named-checkconf -z [主配置文件]
[root@localhost ~]# named-checkconf -z /etc/named.conf
zone localhost.localdomain/IN: loaded serial 0
zone localhost/IN: loaded serial 0
zone kgc.com/IN: loaded serial 0
zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
zone 0.in-addr.arpa/IN: loaded serial 0

named-checkzone工具基本格式
named-checkzone <域名><区域数据文件>
[root@localhost ~]# named-checkzone kgc.com /var/named/kgc.com.zone 
zone kgc.com/IN: kgc.com/MX 'mail.kog.com' (out of zone) is a CNAME 'mail.kog.com.netsolmail.net' (illegal)
zone kgc.com/IN: loaded serial 0
OK

二、使用BIND构建域名服务器

2.1 实验环境

  • 三台Linux,IP地址设为20.0.0.11、20.0.0.12、20.0.0.13.
  • 其中20.0.0.11作为主域名服务器,20.0.0.12作为从域名服务器,20.0.0.13作为客户机
  • 主从域名服务器配置yum环境部署
  • 20.0.0.11和20.0.0.12均下载bind的四个安装包

2.2 20.0.0.11配置

[root@localhost ~]# yum -y install bind
[root@localhost ~]# yum -y install bind-chroot   ##另外两个默认已安装##
[root@localhost ~]# vi /etc/named.conf
options {
        listen-on port 53 { 20.0.0.12; };
        listen-on-v6 port 53 { ::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     { any; };
};        
zone "bdqn.com" IN {
        type master;
        file "bdqn.com.zone";
        allow-transfer { 20.0.0.12; };
        also-notify { 20.0.0.12; };
};
zone "0.0.20.in-addr.arpa" IN {
        type master;
        file "20.0.0.arpa";
        allow-transfer { 20.0.0.12; };
        also-notify { 20.0.0.12; };
};
:wq
[root@localhost ~]# hostnamectl set-hostname ns2
[root@localhost ~]# bash
[root@ns1 ~]# cd /var/named/
[root@ns1 named]# ll
[root@ns1 named]# cp named.localhost bdqn.com.zone
[root@ns1 named]# vi bdqn.com.zone 
$TTL 1D
@       IN SOA  bdqn.com. admin.bdqn.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       192.168.11.119
www IN  A       192.168.11.119
ftp IN  A       192.168.11.118
mail IN CNAME   www

:wq
[root@ns1 named]# chown named:named /var/named/bdqn.com.zone
[root@ns1 named]# cp named.loopback 20.0.0.arpa
[root@ns1 named]# vi 20.0.0.arpa 
$TTL 1D
@       IN SOA  bdqn1.com. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      bdqn1.com.
        A       20.0.0.100
119 IN  PTR     www.bdqn1.com.
120 IN  PTR     ftp.bdqn1.com.
121 IN  PTR     bbs.bdqn1.com.
:wq
[root@ns1 named]# chown named:named /var/named/20.0.0.arpa 
[root@ns1 named]# systemctl restart named

2.3 20.0.0.12配置

[root@ns2 ~]# vi /etc/named.conf 
options {
        listen-on port 53 { 20.0.0.12; };
        listen-on-v6 port 53 { ::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     { any; };

:wq
[root@ns2 ~]# vi /etc/named.rfc1912.zones
zone "bdqn.com" IN {
        type slave;
        masters { 20.0.0.11; };
        allow-notify { 20.0.0.11; };
        file "slaves/bdqn.com.zone";
};
zone "0.0.20.in-addr.arpa" IN {
        type slave;
        masters { 20.0.0.11; };
        allow-notify { 20.0.0.11; };
        file "slaves/20.0.0.arpa";
};
:wq
[root@ns2 ~]# cd /var/named/slaves/
[root@ns2 slaves]# ll
total 0
[root@ns2 slaves]# systemctl start named
[root@ns2 slaves]# ll
total 8
-rw-r--r-- 1 named named 400 Jul 30 01:29 20.0.0.arpa
-rw-r--r-- 1 named named 311 Jul 30 01:29 bdqn.com.zone

2.4 20.0.0.13配置

[root@localhost ~]# vi /etc/resolv.conf 
nameserver 20.0.0.11
nameserver 20.0.0.12
[root@localhost ~]# nslookup www.bdqn.com
Server:         20.0.0.11
Address:        20.0.0.11#53

Name:   www.bdqn.com
Address: 192.168.11.119

[root@localhost ~]# nslookup 20.0.0.119
Server:         20.0.0.11
Address:        20.0.0.11#53

119.0.0.20.in-addr.arpa name = www.bdqn1.com.

[root@localhost ~]# nslookup 20.0.0.120
Server:         20.0.0.11
Address:        20.0.0.11#53

120.0.0.20.in-addr.arpa name = ftp.bdqn1.com.

[root@localhost ~]# nslookup 20.0.0.121
Server:         20.0.0.11
Address:        20.0.0.11#53