CentOS7系统安装DNS服务
30.1、DNS是什么?
DNS ( Domain Name System )是“域名系统”的英文缩写,简单来说就是一个数据库,用于存储网络中IP地址与主机名的对应关系;简单的说DNS的作用就是把主机名解析为IP地址;如下图:
30.1.1、DNS层级结构
域名系统作为一个层次结构和分布式数据库,包含各种类型的数据,包括主机和域名。DNS数据库中的名称形成一个分层的树状结构;域名在拼装时,是沿着这颗树的最下面往树根上走的;例如:www.baidu.com,其实改余名的完整写法应该是:www.baidu.com. 注意域名最后面有一个 ".";
30.2、DNS查询过程
假设我们第一次通过浏览器访问www.baidu.com这个域名。DNS如何查找到www.baidu.com这台主机呢?如下
- 第一步:当我们在浏览器中输入www.baidu.com后我们的个人电脑首先在本机查找hosts文件中是否有www.baidu.com的指向,如果有则直接访问www.baidu.com所对应的主机;如果没有在查找本DNS缓存中是否有之前的查询记录。如果都没有则将请求交给本地首先DNS指向的本地DNS服务器为我们查询。进入第二步;
- 第二步:本地DNS接收到查询请求后首先看www.baidu.com是否是自己负责解析的域,如果是则将结果返回给用户主机,如果不是自己负责的区域,则查看DNS服务器数据库缓存中是否有之前的解析记录;如果有则将查询结果返回给用户主机;如果没有则由本地DNS服务器向根DNS服务器查询;进入第三步;
- 第三步:本地DNS服务器向 “.” 根DNS服务器查询www.baidu.com域名,根收到请求后查看该域名由哪个顶级域负责授权,根本身不负责,于是将.com所在服务器的IP地址返回一个给本地DNS服务器;说你去找.com吧这个事它负责;进入第四步;
- 第四步:本地DNS服务器拿到.com域的地址后就去找.com,.com收到请求后发现它也不知道www.baidu.com在哪,但是它知道baidu.com;于是.com将baidu.com这个域所在服务器的地址返回给本地DNS服务器,说你去找baidu.com吧,这个事它负责;进入第五步;
- 第五步:本地DNS拿到地址后,向baidu.com发起请求,baidu.com收到请求后发现正是自己负责的区域,于是将www.baidu.com所在服务器的地址返回给本地DNS服务器;进入第6步;
- 第六步:本地DNS收到返回的请求后,将结果返回给用户主机并且缓存到本地一份;于是本地用户主机就拿着地址找到了www.baidu.com;
30.2.1、DNS查询类型
- 递归查询:本地主机向本地DNS服务器查询的阶段;第一步到第二步属于递归查询;
- 迭代查询:本地DNS服务器向根域、顶级域、二级域查询的阶段,第三步到第五步就属于迭代查询;
30.3、DNS服务器类型
负责至少解析一个域
主名称服务器
辅助名称服务器
不负责域解析
缓存名称服务器
30.4、主-辅DNS服务器
- 主DNS:维护所负责解析的域数据库的那台服务器;读写操作均可执行;
- 从DNS:从主DNS服务器那里或其它的从DNS那里复制一份解析库;但只能进行读操作;
30.4.1、复制操作的实施方式
- 序列号:serial,也即是数据库的版本号,主服务器数据内容发生变化时,其版本号要递增;
- 刷新时间间隔:refresh,从服务器每隔多久向主服务器检查序列号更新情况;
- 重试时间间隔:retry,从服务器从主服务器请求同步解析库失败时,再次发起尝试请求的时间间隔;应小于刷新时间间隔;
- 过期时长:expire,从服务器始终联系不到主服务器时,多久之后放弃从主服务器同步数据;停止提供服务;
- 否定答案的缓存时长;minimum
30.4.2、区域传送
- 全量传送:axfr,传送整个数据库;
- 增量传送:lxfr,仅传送变化的数据;
30.4.3、区域(zone)和域(domain)
- 正向解析库:FQDN —> IP
- 反向解析库:IP —> FQDN
30.5、资源记录
资源记录(Resource Record):简称rr;常用的资源记录类型有:A, AAAA, PTR, SOA, MX, CNAME, NS;
- SOA:起始授权记录;一个区域解析库有且只能有一个SOA记录,而且必须放在第一条;
- NS:域名服务记录;一个区域解析库可以有多个NS记录;其中一个为主的;
- A:地址记录,FQDN —> IP
- AAAA:地址记录,FQDN —> IPv6
- MX:邮件交换器;优先级0-99,数字越小优先级越高;
- CNAME:别名记录;
- PTR:地址记录,IP —> FQDN;
30.5.1、定义资源记录的格式
语法格式
name [TTL] IN RR_TYPE VALUE
# RR_TYPE:替换为指定的资源记录类型;
- SOA记录定义格式
name:当前区域的名字;例如:“enzhi.com.”,或者 "1.168.192.in-addr.arpa";
value:由多部分组成
1.当前区域的区域名称(也可以使用主DNS服务器名称);
2.当前区域的管理员的邮箱地址;但地址中不能使用@符号,一般使用"."来替代;
3.(主从服务协调属性的定义以及否定答案的TTL)
例如:
enzhi.com. 86400 IN SOA enzhi.com. admin.enzhi.com.(
2017011901 ;serial
2H ;refresh
10M ;retry
3D ; expire
1D) ;minimum
- NS记录定义格式
name:当前区域的区域名称;
value:当前区域的某DNS服务器的名字;例如:ns1.enzhi.com.;
注意:一个区域可以有多个NS记录;
例如:
enzhi.com. 86400 IN NA ns1.enzhi.com.
enzhi.com. 86400 IN NA ns2.enzhi.com.
- MX记录定义格式
name:当前区域的名称;
value:当前区域某邮件交换器的主机名;
注意:MX记录可以有多个,但每个记录的value之前应该有一个数字表示其优先级;
例如:
enzhi.com 86400 IN MX 10 mail.enzhi.com.
- A记录定义格式
name:某FQDN,例如:www.enzhi.com.;
value:某IPv4地址;
例如:
www.enzhi.com. 86400 IN A 192.168.1.141
www.enzhi.com. 86400 IN A 192.168.1.142
bbs.enzhi.com. 86400 IN A 192.168.1.143
- PTR记录定义格式
name:IP地址,有特定格式,IP反过来写,而且加特定后缀;例如:192.168.1.141的记录应该写为141.1.168.192.in-addr.arpa;
vlaue:FQDN
例如:
141.1.168.192.in-addr.arpa. 86400 IN PTR www.enzhi.com.
- CNAME记录定义格式
name:FQDN格式的别名;
value:FQDN格式的正式名字;
例如:
web.enzhi.com. 86400 IN CNAME www.enzhi.com.
注意:
1、TTL的值可以从全局继承;只要在第一行加$TTL 86400下面所有的资源记录都可以继承;
2、@符号表示当前区域的名称;
3、相邻的两条记录其name相同时后面的可以省略;
4、MX,NS等类型的记录的value为一个FQDN,此FQDN应该有一个A记录;
30.6、安装bind并提供域名解析服务
Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server;bind是dns协议的一种实现;其运行后的程序名为named;
注意:本文演示环境为centos7.2系统环境;
30.6.1、bind的程序包
- bind-libs:被bind和bind-utils包中的程序共同用到的库文件;
- bind-utils:bind客户端程序集;提供了,dig , host, nslookup等相关工具;
- bind:提供 dns server程序,以及几个常用的测试程序;
- bind-chroot:选装;提供了一种安全机制;通常公司内部使用不需要安装;
30.6.2、安装bind
yum -y install bind
bind服务的主配置文件:/etc/named.conf
或包含进来的其它文件:
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
解析库文件:/var/named/目录下;一般名字为:ZONE_NAME.zone
注意:
1、一台DNS服务器可同时为多个区域提供解析;
2、必须要有根区域解析库文件:named.ca;
3、还应该有两个区域解析库文件:localhost和127.0.0.1的正反向解析库;
正向:named.localhost
方向:named.loopback
rndc命令
默认监听在127.0.0.1的tcp/953端口,因此仅允许本地使用;
注意:bind程序安装完成后,默认即可作为缓存服务器使用;如果没有专门负责解析的区域,直接可启动服务;
启动服务方法
CentOS6:service named start
CentOS7:systemctl start named.service
主配置文件的格式
# 全局配置段
options{...}
# 日志配置段
logging{...}
# 区域配置段
zone{...}
注意:每个配置语句必须以分号结尾;否则为语法错误;
30.6.3、缓存服务器的配置
安装完bind以后默认启动就是缓存服务器;仅需要关闭部分不需要的功能即可;
1、配置监听能与外部主机通信的IP地址;
# 在全局配置段中修改
[root@Bj-1-141 ~]# vim /etc/named.conf
listen-on port 53 { 127.0.0.1; 192.168.1.141; };
2、学习时建议关闭部分功能
# 关闭dnssec部分
//dnssec-enable yes;
//dnssec-validation yes;
# 关闭仅允许本地查
//allow-query { localhost; };
注意://表示注释符号
3、检查配置文件是否有语法错误
named-checkconf [/etc/named.conf]
4、启动named服务
[root@Bj-1-141 ~]# systemctl start named.service
5、测试
[root@Bj-1-141 ~]# dig -t A www.baidu.com @192.168.1.141
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.1 <<>> -t A www.baidu.com @192.168.1.141
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57431
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 6
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 1200 IN CNAME www.a.shifen.com.
www.a.shifen.com. 300 IN A 119.75.218.70
www.a.shifen.com. 300 IN A 119.75.217.109
;; AUTHORITY SECTION:
a.shifen.com. 1200 IN NS ns2.a.shifen.com.
a.shifen.com. 1200 IN NS ns1.a.shifen.com.
a.shifen.com. 1200 IN NS ns5.a.shifen.com.
a.shifen.com. 1200 IN NS ns4.a.shifen.com.
a.shifen.com. 1200 IN NS ns3.a.shifen.com.
;; ADDITIONAL SECTION:
ns2.a.shifen.com. 1200 IN A 180.149.133.241
ns3.a.shifen.com. 1200 IN A 61.135.162.215
ns5.a.shifen.com. 1200 IN A 119.75.222.17
ns1.a.shifen.com. 1200 IN A 61.135.165.224
ns4.a.shifen.com. 1200 IN A 115.239.210.176
;; Query time: 277 msec
;; SERVER: 192.168.1.141#53(192.168.1.141)
;; WHEN: 四 1月 19 18:08:58 CST 2017
;; MSG SIZE rcvd: 271
30.7、测试工具
dig , host, nslookup;如果当前系统上没有此三个命令,需要安装bind-utils软件包;
30.7.1、dig命令
功用:用于测试dns系统,因此其不会查询hosts文件;
使用格式
dig [-t RR_TYPE] name [@server] [query options]
查询选项
+[no]trace:跟踪解析过程;
+[no]recurse:进行递归解析;
反向解析
dig -x IPADDR
模拟完全区域传送
dig -t axfr DOMAIN [@server]
示例
# 查询baidu.com的NS记录
[root@Bj-1-141 ~]# dig -t NS baidu.com
# 跟踪解析www.baidu.com的过程
[root@Bj-1-141 ~]# dig +trace www.baidu.com
# 解析www.baidu.com的A记录
[root@Bj-1-141 ~]# dig -t A www.baidu.com
30.7.2、host命令
使用格式
host [-t RR_TYPE] name SERVER_IP
示例
# 解析www.jd.com的A记录
[root@Bj-1-141 ~]# host -t A www.jd.com
www.jd.com is an alias for www.jdcdn.com.
www.jdcdn.com has address 59.108.139.1
30.7.3、nslookup命令
使用格式
nslookup [-opthions] [name] [server]
交互式模式下使用方式
# 命令行下直接输入nslookup
nslookup>
server ip:server为关键字,以指定的IP为dns服务器进行查询;
set q=RR_TYPE:set q= 为关键字,RR_TYPE为要查询的资源类型;
name:要查询的域名;
示例
[root@Bj-1-141 ~]# nslookup
> server 192.168.1.1
Default server: 192.168.1.1
Address: 192.168.1.1#53
> set q=A
> www.baidu.com
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 119.75.218.70
Name: www.a.shifen.com
Address: 119.75.217.109
30.7.4、rndc命令
功用:named服务控制命令
rndc status
rndc flush
30.8、配置解析一个正向区域
演示环境
操作系统版本 | DNS服务器IP地址 | 演示域 | 内核版本 |
---|---|---|---|
CentOS Linux release 7.2.1511 (Core) | 192.168.1.141 | enzhi.com | 3.10.0-327.el7.x86_64 |
注意:以enzhi.com为列;
30.8.1、定义区域
在主配置文件中实现或主配置文件辅助配置文件中实现:/etc/named.conf或者/etc/named.rfc1912.zones
格式
zone "ZONE_NAME" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};
示例
[root@Bj-1-141 ~]# vim /etc/named.rfc1912.zones
# 在对下面添加
zone "enzhi.com." IN {
type master;
file "enzhi.com.zone";
};
注意:区域名字即为域名;
30.8.2、建立区域数据文件
主要记录为A或 AAAA;在/var/named/目录下建立区域数据文件;
1、创建正向区域文件
[root@Bj-1-141 ~]# cd /var/named/
[root@Bj-1-141 named]# vim enzhi.com.zone
$TTL 3600
$ORIGIN enzhi.com.
@ IN SOA enzhi.com. admin.enzhi.com. (
2017011901
1H
10M
3D
1D)
IN NS ns1.enzhi.com.
IN MX 10 mail.enzhi.com.
ns1 IN A 192.168.1.141
mail IN A 192.168.1.142
www IN A 192.168.1.143
bbs IN A 192.168.1.144
bbs IN A 192.168.1.145
注意:
$TTL 3600:表示定义默认TTL值,所以在下面的所有资源记录都不用在写TTL值;
$ORIGIN enzhi.com.:作用是在资源记录中像"ns1.enzhi.com."就可以简写为ns1,会继承$ORIGIN后面定义的域名;
2、修改区域文件的权限及属组
# 修改区域文件的属组为named用户
[root@Bj-1-141 named]# chown :named enzhi.com.zone
# 修改区域文件的权限为640
[root@Bj-1-141 named]# chmod 640 enzhi.com.zone
3、检查配置文件和区域文件是否有语法错误
[root@Bj-1-141 named]# named-checkconf
[root@Bj-1-141 named]# named-checkzone enzhi.com. /var/named/enzhi.com.zone
zone enzhi.com/IN: loaded serial 2017011901
OK
30.8.3、让服务器重载配置文件和区域文件
[root@Bj-1-141 ~]# rndc reload
server reload successful
# 或者执行
[root@Bj-1-141 ~]# systemctl reload named.service
30.8.4、测试
1、解析www.enzhi.com的A记录;
[root@Bj-1-141 ~]# dig -t A www.enzhi.com @192.168.1.141
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.1 <<>> -t A www.enzhi.com @192.168.1.141
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40269
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.enzhi.com. IN A
;; ANSWER SECTION:
www.enzhi.com. 3600 IN A 192.168.1.143
;; AUTHORITY SECTION:
enzhi.com. 3600 IN NS ns1.enzhi.com.
;; ADDITIONAL SECTION:
ns1.enzhi.com. 3600 IN A 192.168.1.141
;; Query time: 0 msec
;; SERVER: 192.168.1.141#53(192.168.1.141)
;; WHEN: 四 1月 19 19:06:12 CST 2017
;; MSG SIZE rcvd: 92
2、解析enzhi.com的NS记录;
[root@Bj-1-141 ~]# dig -t NS enzhi.com @192.168.1.141
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.1 <<>> -t NS enzhi.com @192.168.1.141
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27289
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;enzhi.com. IN NS
;; ANSWER SECTION:
enzhi.com. 3600 IN NS ns1.enzhi.com.
;; ADDITIONAL SECTION:
ns1.enzhi.com. 3600 IN A 192.168.1.141
;; Query time: 34 msec
;; SERVER: 192.168.1.141#53(192.168.1.141)
;; WHEN: 四 1月 19 19:08:53 CST 2017
;; MSG SIZE rcvd: 72
30.9、配置解析一个反向区域
演示环境
操作系统版本 | DNS服务器IP地址 | 演示域 | 内核版本 |
---|---|---|---|
CentOS Linux release 7.2.1511 (Core) | 192.168.1.141 | enzhi.com | 3.10.0-327.el7.x86_64 |
30.9.1、定义区域
在主配置文件中实现或主配置文件辅助配置文件中实现:/etc/named.conf或者/etc/named.rfc1912.zones
格式
zone "ZONE_NAME" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};
注意:反向区域的名字,为反写的网断地址.in-addr.arpa;例如:1.168.192.in-addr.arpa;
示例
[root@Bj-1-141 ~]# vim /etc/named.rfc1912.zones
# 在最下面添加
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.168.1.zone";
};
30.9.2、建立区域解析库文件(主要记录为PTR)
1、创建反向解析区域文件;
[root@Bj-1-141 ~]# cd /var/named/
[root@Bj-1-141 named]# vim 192.168.1.zone
$TTL 3600
$ORIGIN 1.168.192.in-addr.arpa.
@ IN SOA enzhi.com. admin.enzhi.com. (
2017011901
1H
10M
3D
1D)
IN NS ns1.enzhi.com.
141 IN PTR ns1.enzhi.com.
142 IN PTR mail.enzhi.com.
143 IN PTR www.enzhi.com.
144 IN PTR bbs.enzhi.com.
145 IN PTR bbs.enzhi.com.
2、修改区域文件属组及权限
[root@Bj-1-141 named]# chmod 640 192.168.1.zone
[root@Bj-1-141 named]# chown :named 192.168.1.zone
3、检查配置文件及反向区域文件配置语法
[root@Bj-1-141 ~]# named-checkconf
[root@Bj-1-141 ~]# named-checkzone 1.168.192.in-addr.arpa /var/named/192.168.1.zone
zone 1.168.192.in-addr.arpa/IN: loaded serial 2017011901
OK
30.9.3、重载配置文件和区域文件
[root@Bj-1-141 ~]# rndc reload
server reload successful
# 或者执行
[root@Bj-1-141 ~]# systemctl reload named.service
30.9.4、测试
1、反向解析www.enzhi.com域名的IP地址
[root@Bj-1-141 ~]# dig -x 192.168.1.143 @192.168.1.141
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.1 <<>> -x 192.168.1.143
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57138
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;143.1.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
143.1.168.192.in-addr.arpa. 3600 IN PTR www.enzhi.com.
;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 3600 IN NS ns1.enzhi.com.
;; ADDITIONAL SECTION:
ns1.enzhi.com. 3600 IN A 192.168.1.141
;; Query time: 0 msec
;; SERVER: 192.168.1.141#53(192.168.1.141)
;; WHEN: 四 1月 19 19:27:39 CST 2017
;; MSG SIZE rcvd: 116
2、反向解析mail.enzhi.com的IP地址;
[root@Bj-1-141 ~]# dig -x 192.168.1.142 @192.168.1.141
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.1 <<>> -x 192.168.1.142 @192.168.1.141
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51427
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;142.1.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
142.1.168.192.in-addr.arpa. 3600 IN PTR mail.enzhi.com.
;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 3600 IN NS ns1.enzhi.com.
;; ADDITIONAL SECTION:
ns1.enzhi.com. 3600 IN A 192.168.1.141
;; Query time: 0 msec
;; SERVER: 192.168.1.141#53(192.168.1.141)
;; WHEN: 四 1月 19 19:28:57 CST 2017
;; MSG SIZE rcvd: 117
30.10、配置主从服务器
主服务器的安装和配置这里不在演示根据上面配置正向解析和反向解析后在配置从即可;
注意:从服务器时区域级别的概念;每次修改主服务器区域配置文件序列号要加1;两台服务器要做时间同步
演示环境
操作系统版本 | 主DNS服务器IP地址 | 演示域 | 内核版本 |
---|---|---|---|
CentOS Linux release 7.2.1511 (Core) | 192.168.1.141 | enzhi.com | 3.10.0-327.el7.x86_64 |
操作系统版本 | 从DNS服务器IP地址 | 演示域 | 内核版本 |
CentOS Linux release 7.2.1511 (Core) | 192.168.1.142 | enzhi.com | 3.10.0-327.el7.x86_64 |
30.10.1、安装配置从服务器
1、安装bind软件包
[root@BJ-1-142 ~]# yum -y install bind bind-utils
2、修改主配置文件
[root@BJ-1-142 ~]# vim /etc/named.conf
# 修改options全局配置段
listen-on port 53 { 127.0.0.1; 192.168.1.142; };
# 关闭允许查询
//allow-query { localhost; };
# 关闭dnssec部分功能
//dnssec-enable yes;
//dnssec-validation yes;
3、定义区域
格式:
zone "ZONE_NAME" IN {
type slave;
file "slaves/ZONE_NAME.zone";
masters { MASTER_IP; };
};
示例:
[root@BJ-1-142 ~]# vim /etc/named.rfc1912.zones
zone "enzhi.com" IN {
type slave;
file "slaves/enzhi.com.zone";
masters { 192.168.1.141; };
};
zone "1.168.192.in-addr.arpa" IN {
type slave;
file "slaves/192.168.1.zone";
masters { 192.168.1.141; };
};
4、配置文件语法检查
[root@BJ-1-142 ~]# named-checkconf
5、启动named服务
[root@BJ-1-142 ~]# systemctl start named.service
[root@BJ-1-142 ~]# rndc status
version: 9.9.4-RedHat-9.9.4-38.el7_3.1 <id:8f9657aa>
CPUs found: 2
worker threads: 2
UDP listeners per interface: 2
number of zones: 103
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
30.10.2、修改主dns服务器区域数据文件
1、确保区域数据文件中为每个从服务器配置NS记录;并且在正向区域文件中,需要为每个从服务器的NS记录的主机名配置一个A记录,且此A记录后面的地址为真正的从服务器的IP地址;
[root@Bj-1-141 named]# vim enzhi.com.zone
$TTL 3600
$ORIGIN enzhi.com.
@ IN SOA enzhi.com. admin.enzhi.com. (
2017011902 ;#修改区域文件序列号要自增加1;
1H
10M
3D
1D)
IN NS ns1.enzhi.com.
IN NS ns2.enzhi.com. ;#添加一条从服务器的NS记录
IN MX 10 mail.enzhi.com.
ns1 IN A 192.168.1.141
ns2 IN A 192.168.1.142 ;#添加一条从服务器的A记录
mail IN A 192.168.1.142
www IN A 192.168.1.143
bbs IN A 192.168.1.144
bbs IN A 192.168.1.145
2、反向区域文件中也要增加NS记录
[root@Bj-1-141 named]# vim 192.168.1.zone
$TTL 3600
$ORIGIN 1.168.192.in-addr.arpa.
@ IN SOA enzhi.com. admin.enzhi.com. (
2017011902 ;#修改区域文件序列号要自增加1
1H
10M
3D
1D)
IN NS ns1.enzhi.com.
IN NS ns2.enzhi.com. ;#添加一条从服务器的NS记录
141 IN PTR ns1.enzhi.com.
142 IN PTR ns2.enzhi.com. ;#添加一条从服务器的PTR记录
142 IN PTR mail.enzhi.com.
143 IN PTR www.enzhi.com.
144 IN PTR bbs.enzhi.com.
145 IN PTR bbs.enzhi.com.
3、检查配置文件及区域文件是否存在语法错误
[root@Bj-1-141 named]# named-checkconf
[root@Bj-1-141 named]# named-checkzone enzhi.com. enzhi.com.zone
zone enzhi.com/IN: loaded serial 2017011902
OK
[root@Bj-1-141 named]# named-checkzone 1.168.192.in-addr.arpa 192.168.1.zone
zone 1.168.192.in-addr.arpa/IN: loaded serial 2017011902
OK
4、重载主服务器配置文件
[root@Bj-1-141 named]# rndc reload
server reload successful
[root@Bj-1-141 named]# systemctl status named.service
30.10.3、测试
1、在从服务器上解析enzhi.com的NS记录;
[root@BJ-1-142 ~]# dig -t NS enzhi.com @192.168.1.142
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.1 <<>> -t NS enzhi.com @192.168.1.142
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5598
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;enzhi.com. IN NS
;; ANSWER SECTION:
enzhi.com. 3600 IN NS ns1.enzhi.com.
enzhi.com. 3600 IN NS ns2.enzhi.com.
;; ADDITIONAL SECTION:
ns1.enzhi.com. 3600 IN A 192.168.1.141
ns2.enzhi.com. 3600 IN A 192.168.1.142
;; Query time: 1 msec
;; SERVER: 192.168.1.142#53(192.168.1.142)
;; WHEN: 四 1月 19 20:16:24 CST 2017
;; MSG SIZE rcvd: 106
2、在从服务器上解析www.enzhi.com的A记录;
[root@BJ-1-142 ~]# dig -t A www.enzhi.com @192.168.1.142
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.1 <<>> -t A www.enzhi.com @192.168.1.142
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36363
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.enzhi.com. IN A
;; ANSWER SECTION:
www.enzhi.com. 3600 IN A 192.168.1.143
;; AUTHORITY SECTION:
enzhi.com. 3600 IN NS ns1.enzhi.com.
enzhi.com. 3600 IN NS ns2.enzhi.com.
;; ADDITIONAL SECTION:
ns1.enzhi.com. 3600 IN A 192.168.1.141
ns2.enzhi.com. 3600 IN A 192.168.1.142
;; Query time: 1 msec
;; SERVER: 192.168.1.142#53(192.168.1.142)
;; WHEN: 四 1月 19 20:16:08 CST 2017
;; MSG SIZE rcvd: 126
注意:如果从不服务器不能解析,使用手动测试区域传送看看能否同步,在从服务器上;
30.10.4、手动测试区域传送
在从服务器上测试,DNS服务器指向主服务器的IP地址;如果资源记录显示都能同步则配置没有问题;如果从服务器手动测试没问题,但是无法解析出从服务器的NS记录,解决方法,查看防火墙,selinux,或者重新修改主服务器序列号后重载主服务器配置文件;
[root@BJ-1-142 ~]# dig -t axfr enzhi.com @192.168.1.141
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.1 <<>> -t axfr enzhi.com @192.168.1.141
;; global options: +cmd
enzhi.com. 3600 IN SOA enzhi.com. admin.enzhi.com. 2017011903 3600 600 259200 86400
enzhi.com. 3600 IN NS ns1.enzhi.com.
enzhi.com. 3600 IN NS ns2.enzhi.com.
enzhi.com. 3600 IN MX 10 mail.enzhi.com.
bbs.enzhi.com. 3600 IN A 192.168.1.144
bbs.enzhi.com. 3600 IN A 192.168.1.145
bbs.enzhi.com. 3600 IN A 192.168.1.146
mail.enzhi.com. 3600 IN A 192.168.1.142
ns1.enzhi.com. 3600 IN A 192.168.1.141
ns2.enzhi.com. 3600 IN A 192.168.1.142
www.enzhi.com. 3600 IN A 192.168.1.143
enzhi.com. 3600 IN SOA enzhi.com. admin.enzhi.com. 2017011903 3600 600 259200 86400
;; Query time: 1 msec
;; SERVER: 192.168.1.141#53(192.168.1.141)
;; WHEN: 四 1月 19 20:21:59 CST 2017
;; XFR size: 12 records (messages 1, bytes 282)
30.11、子域授权
演示环境
操作系统版本 | 主DNS服务器IP地址 | 演示域 | 内核版本 |
---|---|---|---|
CentOS Linux release 7.2.1511 (Core) | 192.168.1.141 | enzhi.com | 3.10.0-327.el7.x86_64 |
操作系统版本 | 从DNS服务器IP地址 | 演示域 | 内核版本 |
CentOS Linux release 7.2.1511 (Core) | 192.168.1.142 | enzhi.com | 3.10.0-327.el7.x86_64 |
操作系统版本 | 子域DNS IP地址 | 演示域 | 内核版本 |
CentOS Linux release 7.2.1511 (Core) | 192.168.1.143 | ops.enzhi.com | 3.10.0-327.el7.x86_64 |
30.11.1、配置主DNS服务器
1、在主DNS服务器正向解析库文件中添加;
[root@Bj-1-141 named]# vim enzhi.com.zone
ops IN NS ns1.ops
ns1.ops IN A 192.168.1.143
# 注意要修改了配置序列号要加1;
2、重载服务
[root@Bj-1-141 named]# rndc reload
server reload successful
30.11.2、配置子域服务器
1、安装bind服务
[root@BJ-1-143 ~]# yum -y install bind bind-utils
2、修改监听地址关闭部分功能
[root@BJ-1-143 ~]# vim /etc/named.conf
listen-on port 53 { 127.0.0.1; 192.168.1.143; };
# 关闭部分功能前面加上注释即可;
//allow-query { localhost; };
//dnssec-enable yes;
//dnssec-validation yes;
3、添加一个正向区域
[root@BJ-1-143 ~]# vim /etc/named.rfc1912.zones
# 在最下面添加
zone "ops.enzhi.com" IN {
type master;
file "ops.enzhi.com.zone";
};
4、创建子域,区域数据库文件;
[root@BJ-1-143 named]# cd /var/named
[root@BJ-1-143 named]# vim ops.enzhi.com.zone
$TTL 3600
$ORIGIN ops.enzhi.com.
@ IN SOA ops.enzhi.com. admin.ops.enzhi.com. (
2017011901
1H
10M
3D
1D)
IN NS ns1
ns1 IN A 192.168.1.143
www IN A 192.168.1.150
# 修改区域文件权限及属组
[root@BJ-1-143 named]# chown :named ops.enzhi.com.zone
[root@BJ-1-143 named]# chmod 640 ops.enzhi.com.zone
5、检查配置文件语法并重载配置文件
[root@BJ-1-143 named]# named-checkconf
[root@BJ-1-143 named]# named-checkzone ops.enzhi.com. ops.enzhi.com.zone
zone ops.enzhi.com/IN: loaded serial 2017011901
OK
# 重载配置
[root@BJ-1-143 named]# systemctl start named.service
6、dig命令测试能否解析父域,测试父域能否解析子域
30.12、定义转发
注意:被转发的服务器必须允许为当前服务器做递归;要在子域服务器上做转发解析父域
30.12.1、区域转发
仅转发对某特定区域的解析请求;
格式
zone "ZONE_NAME" IN {
type forward;
forward {first|only};
forwarders { SERVER_IP; };
};
first:首先转发,转发器不响应时;
SERVER_IP:为父域的主从服务器地址;
示例
[root@BJ-1-143 named]# vim /etc/named.rfc1912.zones
# 仅对enzhi.com这个域做转发
zone "enzhi.com" IN {
type forward;
forward only;
forwarders { 192.168.1.141; 192.168.1.142; };
};
重载配置文件
[root@BJ-1-143 named]# rndc reload
server reload successful
测试
解析父域的www.enzhi.com测试能否解析
[root@BJ-1-143 named]# dig -t A www.enzhi.com @192.168.1.143
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.1 <<>> -t A www.enzhi.com @192.168.1.143
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5835
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.enzhi.com. IN A
;; ANSWER SECTION:
www.enzhi.com. 3076 IN A 192.168.1.144 《====可以解析
;; AUTHORITY SECTION:
enzhi.com. 171964 IN NS ns2.4.cn.
enzhi.com. 171964 IN NS ns1.4.cn.
;; Query time: 0 msec
;; SERVER: 192.168.1.143#53(192.168.1.143)
;; WHEN: 四 1月 19 22:15:04 CST 2017
;; MSG SIZE rcvd: 98
30.12.2、全局转发
针对凡是本地没有通过zone定义的区域查询请求,通通转发给某转发器;
示例:在子域服务器修改主配置文件定义全局转发
[root@BJ-1-143 ~]# vim /etc/named.conf
# 在options全局段中添加,全局转发给父域主服务器
forward only;
forwarders { 192.168.1.141; };
重载配置文件
[root@BJ-1-143 ~]# rndc reload
server reload successful