前言
域名解析是把域名指向网站空间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 1 D '有效解析记录的生存周期'
@ IN SOA @ rname. invalid. ( 'SOA标记,域名,管理邮箱'
2011030502 '更新序列号,可以是10位以内的整数'
1 D '无效解析记录的生存周期'
1 W '失效时间,超过改时间仍无法下载则放弃'
3 H ) '刷新时间,重新下载地址数据的间隔'
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 区域数据配置文件的特殊应用
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 1 D
@ IN SOA bdqn. com. admin. bdqn. com. (
0 ; serial
1 D ; refresh
1 H ; retry
1 W ; expire
3 H ) ; 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 1 D
@ IN SOA bdqn1. com. rname. invalid. (
0 ; serial
1 D ; refresh
1 H ; retry
1 W ; expire
3 H ) ; 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