目录
- 前言
- 一、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