博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DNS原理和CentOS7上bind域名服务器配置详解
阅读量:7293 次
发布时间:2019-06-30

本文共 18068 字,大约阅读时间需要 60 分钟。

本文大纲:

理论部分:

    1、什么是DNS

    2、DNS层次介绍及基础内容

    3、DNS的工作原理及过程

域名服务器配置实战:

    4、主域名服务器配置

    5、辅域名服务器配置

    6、缓存域名服务器配置

 

1、什么是DNS?

( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。DNS就是这样的一位“翻译官”,它的基本工作原理可用下图来表示。

2、DNS简介

域名系统作为一个层次结构和分布式数据库,包含各种类型的数据,包括主机名和域名。DNS数据库中的名称形成一个分层树状结构称为域命名空间。域名包含单个标签分隔点,例如:im.qq.com。
完全限定的域名 (FQDN) 唯一地标识在 DNS 分层树中的主机的位置,通过指定的路径中点分隔从根引用的主机的名称列表。 下图显示与主机称为 im 内 qq.com DNS 树的示例。 主机的 FQDN 是 im.qq.com。
DNS 域的名称层次结构

DNS域名层次介绍:

按其功能命名空间中用来描述 DNS 域名称的五个类别的介绍详见下表中,以及与每个名称类型的示例

常见的顶级域名:

 

组织域:.com, .net, .org, .gov, .edu, .mil

国家域:.iq, .tw, .hk, .jp, .cn, ...

互联网域名系统由名称注册机构负责维护分配由组织和国家/地区的顶级域在 Internet 上进行管理。 这些域名按照国际标准 3166。 一些很多现有缩写,保留以供组织中,以及两个字母和三个字母的国家/地区使用的缩写使用下表所示。一些常见的DNS域名称如下图:

3、DNS的工作原理及过程

当我们打开浏览器输入某个网站,我们是如何通过网络找到主机的呢,下来我来说说域名解析的具体过程,看下图:

具体的过程说明:

我们以上图用户访问www.wlm.com为例

对于客户机

1.当用户以域名方式访问某个主机时,本地计算机首先会查看自己的DNS Cache里有没有该域名解析的缓存,有则直接解析;

2.如果本地缓存没有该域名解析,就查看hosts文件,看有没有该域名解析,有则给出解析结果;

3.如果没有就请求DNS Server服务器,通过递归查询,直接从NDS Server得出需要查询的结果。

对于DNS Server域名服务器

1.如果用户请求的是DNS Server掌管的域内服务器,则直接给出解析结果;

2.如果用户请求的不是本域内的服务器或者DNS Server是缓存服务器,没有自己掌握的域名;

    (1)DNS Server会直接访问根域服务器,而不是访问自己的顶级域服务器,根域不知道www.wlm.com主机的IP地址,但是跟域会告诉DNS server,.com顶级域会知道www.wlm.com的IP,并返回.com的IP ;  

     (2)DNS Server请求.com顶级域解析,.com顶级域也不知道www.wlm.com主机,但是.com顶级域会返回wlm.com的地址;

     (3)DNS  Server 访问wlm.com主机,www.wlm.com属于wlm.com域内。wlm.com返回www.wlm.com的主机IP,DNS Server响应用户的请求,返回IP地址;用户计算机根据IP地址访问www.wlm.com主机。

 

 

域名服务器配置实战:

部署的逻辑图如下:

 

配置说明:

主域名服务器:ns1.wlm.com.         IP:10.10.10.3

从域名服务器:ns2.wlm.com.         IP:10.10.10.10

缓存域名服务器:ns3.wlm.com.       IP:10.10.10.11

所有的系统都为CentOS7

 

在每台服务器上的准备工作:

这里以ns1.wlm.com为例

(1)配置IP,将DNS指向自己

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
vim 
/etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=none
IPADDR=10.10.10.3
NETMASK=255.255.255.0
GATEWAY=10.10.10.2
DNS1=10.10.10.3
DEFROUTE=
yes
PEERDNS=
yes
PEERROUTES=
yes
IPV4_FAILURE_FATAL=no
IPV6INIT=
yes
IPV6_AUTOCONF=
yes
IPV6_DEFROUTE=
yes
IPV6_PEERDNS=
yes
IPV6_PEERROUTES=
yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
DEVICE=eno16777736
ONBOOT=
yes

(2)重启网卡

1
systemctl restart network.service

(3)关闭防火墙和selinux

1
2
3
4
systemctl stop  firewalld.service
systemctl disable firewalld.service 
#开启自动关闭
 
setenforce 0    
# 可以vim /etc/selinux/config将selinux改为disabled,设置为开机就关闭

(4)配置yum源(这里就不赘述了),yum安装bind

1
2
3
[root@ns1 ~]
# yum install -y bind
[root@ns1 ~]
# yum install -y bind-libs
[root@ns1 ~]
# yum install -y  bind-utils #这个非必要,需要dig命令,需要安装

程序包说明:

    bind-libs:被bind和bind-utils包中的程序共同用到的库文件;

    bind-utils:bind客户端程序集,例如dig, host, nslookup等;

 

    bind:提供的dns server程序、以及几个常用的测试程序

    bind-chroot:选装,让named运行于jail模式下;

(5)修改配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@ns1 ~]
# vim /etc/named.conf
options {
        
listen-on port 53 { 127.0.0.1; 10.10.10.3; };
# 监听本机IP的53端口
        
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     { localhost; }; 
# 这里代表只解析本机,//为注释
        
allow-transfer { 10.10.10.0
/24
; };    
        
# 配置里默认没有这一项配置,只允许的slave主机做数据传送
        
# 从服务器配置如下:allow-transfer { none; }; #从服务器不需要做传输
        
recursion 
yes
;
 
        
dnssec-
enable 
no;    
# 安全设置关闭
        
dnssec-validation no;    
# 安全设置关闭

修改完毕,保存退出

语法检查:

1
named-checkconf 
#语法检查,默认检查/etc/named.conf文件,如果不是这个路径,在后面写路径

重启named服务器

1
[root@ns1 ~]
# systemctl restart named.service

设置开机启动

1
[root@ns1 named]
# systemctl enable named.service

 

(6)查看监听的IP和端口

1
2
3
4
5
6
7
8
9
10
11
12
[root@ns1 named]
# netstat -tunlp | grep 53
tcp        0      0 10.10.10.3:53           0.0.0.0:*               LISTEN      5509
/named          
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      5509
/named          
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      2384
/dnsmasq        
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      5509
/named          
tcp6       0      0 ::1:53                  :::*                    LISTEN      5509
/named          
tcp6       0      0 ::1:953                 :::*                    LISTEN      5509
/named          
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           854
/avahi-daemon
: r 
udp        0      0 10.10.10.3:53           0.0.0.0:*                           5509
/named          
udp        0      0 127.0.0.1:53            0.0.0.0:*                           5509
/named          
udp        0      0 192.168.122.1:53        0.0.0.0:*                           2384
/dnsmasq        
udp6       0      0 ::1:53                  :::*                                5509
/named

(7)配置时间服务器,利用ntpdate同步时间使每台服务器时间一致(如果是练习,这不是必要步骤)。

4、主域名服务器配置

具体配置步骤:

1)yum安装bind

1
[root@ns1 ~]
# yum install -y bind

2)修改配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@ns1 ~]
# vim /etc/named.conf
options {
        
listen-on port 53 { 127.0.0.1; 10.10.10.3; };
# 监听本机IP的53端口
        
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     { localhost; }; 
# 这里代表只解析本机,//为注释
        
allow-transfer { 10.10.10.0
/24
; };    
        
# 配置里默认没有这一项配置,只允许的slave主机做数据传送
        
recursion 
yes
;
 
        
dnssec-
enable 
no;    
# 安全设置关闭
        
dnssec-validation no;    
# 安全设置关闭

修改完毕,保存退出

语法检查:

1
named-checkconf 
#语法检查,默认检查/etc/named.conf文件,如果不是这个路径,在后面写路径

重启named服务器

1
[root@ns1 ~]
# systemctl restart named.service

bind不设置任何域名,默认是缓存服务器,配置里面默认有根域的地址,现在可以做域名解析了。

1
2
3
4
5
6
7
8
9
10
[root@ns1 ~]
# dig -t A +trace www.baidu.com
 
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A +trace www.baidu.com
;; global options: +cmd
.           457478  IN  NS  a.root-servers.net.    
# 首先找到跟域
com.            172800  IN  NS  a.gtld-servers.net.    
# 再找.com
baidu.com.      172800  IN  NS  dns.baidu.com.         
# 最后找到dns
ww.baidu.com.       1200    IN  CNAME   www.a.shifen.com.      
# 找到最后的域名
 
;; Received 239 bytes from 220.181.37.10
#53(ns3.baidu.com) in 13 ms    # 解析的ip

 

dig命令介绍:dig  [-t RR_TYPE]  name  [@SERVER]  [query options]						用于测试dns系统,因此其不会查询hosts文件;							查询选项:+[no]trace:跟踪解析过程;+[no]recurse:进行递归解析;注意:反向解析测试dig  -x  IP模拟完全区域传送:dig  -t  axfr  DOMAIN  [@server]dig +trace -t A www.baidu.comdig -x 61.135.169.121

3)配置一个正向解析区域

(1)定义区域,我们以wlm.com为例 

    在主配置文件中或主配置文件辅助配置文件中实现(/etc/named.rfc1912.zones);  

1
2
3
4
5
6
vim 
/etc/named
.rfc1912.zones 
# 配置文件最后面添加
zone 
"wlm.com" 
IN {
        
type 
master;
        
file 
"wlm.com.zone"
;
};
/etc/named.rfc1912.zones配置文件里的写法格式:zone  "ZONE_NAME"  IN  {	type  {master|slave|hint|forward}; 	file  "ZONE_NAME.zone"; };							注意:区域名字即为域名;

(2)建立区域数据文件(主要记录为A或AAAA记录)

     在/var/named目录下建立区域数据文件;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@ns1 ~]
# vim /var/named/wlm.com.zone   #这里定义的文件要跟上一步在配置里写的文件一致
$TTL 3600
$ORIGIN wlm.com.
@       IN      SOA     ns1.wlm.com.   dnsadmin.wlm.com. (
        
2014100101
        
1H
        
10M
        
3D
        
1D )
        
IN      NS      ns1
        
IN      MX   10 mx1
        
IN      MX   20 mx2
ns1     IN      A       10.10.10.3
mx1     IN      A       10.10.10.100
mx2     IN      A       10.10.10.200
www     IN      A       10.10.10.4
web     IN     CNAME    www

 

区域数据库文件说明;$TTL 3600    # 设置客户端缓存时间$ORIGIN wlm.com.    # 定义当前区域的名字,下面的@就是替代这个值@       IN      SOA     ns1.wlm.com.   dnsadmin.wlm.com. (# SOA:Start Of Authority,起始授权记录; 一个区域解析库有且只能有一个SOA记录,而且必须放在第一条;# ns1.wlm.com. 该域的主域名服务器# dnsadmin.wlm.com. 管理员邮箱                   2014100101    # 序列号:serial        1H            # 刷新时间间隔:refresh        10M           # 重试时间间隔:retry,         3D            # 过期时长:expire        1D )          # negative answer ttl:否定答案的缓存时长        IN      NS      ns1   # 域名服务记录;一个区域解析库可以有多个NS记录;其中一个为主的        IN      MX   10 mx1   #邮件交换器 优先级:0-99,数字越小优先级越高        IN      MX   20 mx2ns1     IN      A       10.10.10.3    #地址记录mx1     IN      A       10.10.10.100    mx2     IN      A       10.10.10.200www     IN      A       10.10.10.4web     IN     CNAME    www            #别名记录系统的介绍:主-辅DNS服务器:    主DNS服务器:维护所负责解析的域数据库的那台服务器;读写操作均可进行;    从DNS服务器:从主DNS服务器那里或其它的从DNS服务器那里“复制”一份解析库;但只能进行读操作;“复制”操作的实施方式:    序列号:serial, 也即是数据库的版本号;主服务器数据库内容发生变化时,其版本号递增;    刷新时间间隔:refresh, 从服务器每多久到主服务器检查序列号更新状况;    重试时间间隔:retry, 从服务器从主服务器请求同步解析库失败时,再次发起尝试请求的时间间隔;    过期时长:expire,从服务器始终联系不到主服务器时,多久之后放弃从主服务器同步数据;停止提供服务;    negative answer ttl:否定答案的缓存时长主服务器”通知“从服务器随时更新数据;区域传送:    全量传送:axfr, 传送整个数据库;    增量传送:ixfr, 仅传送变量的数据;区域(zone)和域(domain):magedu.com域:    FQDN --> IP正向解析库;区域    IP --> FQDN反向解析库;区域区域数据库文件:    资源记录:Resource Record, 简称rr;    记录有类型:A, AAAA, PTR, SOA, NS, CNAME, MXSOA:Start Of Authority,起始授权记录; 一个区域解析库有且只能有一个SOA记录,而且必须放在第一条;NS:Name Service,域名服务记录;一个区域解析库可以有多个NS记录;其中一个为主的;A: Address, 地址记录,FQDN --> IPv4;AAAA:地址记录, FQDN --> IPv6;CNAME:Canonical Name,别名记录;PTR:Pointer,IP --> FQDNMX:Mail eXchanger,邮件交换器;优先级:0-99,数字越小优先级越高;资源记录的定义格式:语法:	name  	[TTL] IN	RR_TYPE value客户端可以缓存的时间	资源记录SOA:name: 当前区域的名字;例如”magedu.com.”,或者“2.3.4.in-addr.arpa.”;value:有多部分组成(1) 当前区域的区域名称(也可以使用主DNS服务器名称);(2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般使用点号来替代;(3) (主从服务协调属性的定义以及否定答案的TTL)例如:magedu.com. 86400 IN SOA magedu.com. admin.magedu.com.  (    2017010801	; serial    2H ; refresh    10M ; retry    1W	; expire    1D	; negative answer ttl )NS:name: 当前区域的区域名称value:当前区域的某DNS服务器的名字,例如ns.magedu.com.;注意:一个区域可以有多个ns记录; 例如:magedu.com. 86400 IN NS  	ns1.magedu.com.magedu.com. 86400 IN NS  	ns2.magedu.com.MX:name: 当前区域的区域名称value:当前区域某邮件交换器的主机名;注意:MX记录可以有多个;但每个记录的value之前应该有一个数字表示其优先级;例如:magedu.com. IN MX 10  	mx1.magedu.com.magedu.com. IN MX 20  	mx2.magedu.com.A:name:某FQDN,例如www.magedu.com.value:某IPv4地址;例如:www.magedu.com.	IN A	1.1.1.1www.magedu.com.	IN A	1.1.1.2bbs.magedu.com.	IN A	1.1.1.1AAAA:name:FQDNvalue: IPv6PTR:name:IP地址,有特定格式,IP反过来写,而且加特定后缀;例如1.2.3.4的记录应该写为4.3.2.1.in-addr.arpa.;value:FQND例如:4.3.2.1.in-addr.arpa.  	IN  PTR	www.magedu.com.CNAME:name:FQDN格式的别名;value:FQDN格式的正式名字;例如:web.magedu.com.  	IN  	CNAME  www.magedu.com.注意:(1) TTL可以从全局继承;(2) @表示当前区域的名称;(3) 相邻的两条记录其name相同时,后面的可省略;(4) 对于正向区域来说,各MX,NS等类型的记录的value为FQDN,此FQDN应该有一个A记录;

权限及属组修改:

1
2
[root@ns1 ~]
# chgrp named /var/named/wlm.com.zone 
[root@ns1 ~]
# chmod o= /var/named/wlm.com.zone

 

检查语法错误:

1
2
3
4
[root@ns1 ~]
# named-checkzone wlm.com  /var/named/wlm.com.zone 
zone wlm.com
/IN
: loaded serial 2014100101
OK
[root@ns1 ~]
# named-checkconf

(3)让服务器重载配置文件和区域数据文件

1
2
3
# rndc  reload 或  systemctl  reload  named.service
[root@ns1 ~]
# rndc reload
server reload successful

(4)验证

[root@ns1 ~]# ping ns1.wlm.com

PING ns1.wlm.com (10.10.10.3) 56(84) bytes of data.

64 bytes from 10.10.10.3: icmp_seq=1 ttl=64 time=0.036 ms

 

[root@ns1 ~]# nslookup

> ns1.wlm.com 

Server:10.10.10.3

Address:10.10.10.3#53

Name:ns1.wlm.com

Address: 10.10.10.3

 

4)配置一个反向解析区域

(1)定义区域

  在主配置文件中或主配置文件辅助配置文件中实现;

1
2
3
4
5
[root@ns1 ~]
# vim /etc/named.rfc1912.zones
zone 
"10.10.10.in-addr.arpa" 
IN {
        
type 
master;
        
file 
"10.10.10.zone"
;
};

 

zone  "ZONE_NAME"  IN  {    type  {master|slave|hint|forward};    file  "ZONE_NAME.zone"; };							注意:反向区域的名字反写的网段地址.in-addr.arpa 示例:100.16.172.in-addr.arpa

(2) 定义区域解析库文件(主要记录为PTR)

在/var/named目录下建立区域数据文件;示例:区域名称为100.16.172.in-addr.arpa;(反过来写IP)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@ns1 named]
# vim /var/named/10.10.10.zone 
$TTL 3600
$ORIGIN 10.10.10.
in
-addr.arpa.
@       IN      SOA     ns1.wlm.com.    nsadmin.wlm.com. (
        
2014100801
        
1H
        
10M
        
3D
        
12H )
        
IN      NS      ns1.wlm.com.
3       IN      PTR     ns1.wlm.com.
100     IN      PTR     mx1.wlm.com.
200     IN      PTR     mx2.wlm.com.
4       IN      PTR     www.wlm.com.

权限及属组修改:

1
2
[root@ns1 named]
# chmod o= /var/named/10.10.10.zone
[root@ns1 named]
# chgrp named /var/named/10.10.10.zone

 检查语法错误:

1
2
3
zone wlm.com
/IN
: loaded serial 2014100101
OK
[root@ns1 named]
# named-checkconf

(3) 让服务器重载配置文件和区域数据文件

1
2
# rndc  reload 或
# systemctl  reload  named.service

验证:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@ns1 named]
# dig -x 10.10.10.3
 
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -x 10.10.10.3
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, 
id
: 25014
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;3.10.10.10.
in
-addr.arpa.   IN  PTR
 
;; ANSWER SECTION:
3.10.10.10.
in
-addr.arpa. 3600  IN  PTR ns1.wlm.com.
 
;; AUTHORITY SECTION:
10.10.10.
in
-addr.arpa.  3600    IN  NS  ns1.wlm.com.
 
;; ADDITIONAL SECTION:
ns1.wlm.com.        3600    IN  A   10.10.10.3
 
;; Query 
time
: 26 msec
;; SERVER: 10.10.10.3
#53(10.10.10.3)
;; WHEN: 三 11月 16 13:55:13 CST 2016
;; MSG SIZE  rcvd: 107

至此,主域名服务器已经配置好了。已经可以使用了。

5、辅域名服务器配置

在准备工作已经说过了,这里在添加上/etc/named.conf的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
options {
        
listen-on port 53 { 127.0.0.1; 10.10.10.10; };
        
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     { localhost; };
        
allow-transfer { none; };
 
        
/* 
         
- If you are building an AUTHORITATIVE DNS server, 
do 
NOT 
enable 
recursion.
         
- If you are building a RECURSIVE (caching) DNS server, you need to 
enable 
           
recursion. 
         
- If your recursive DNS server has a public IP address, you MUST 
enable 
access 
           
control to limit queries to your legitimate 
users
. Failing to 
do 
so will
           
cause your server to become part of large scale DNS amplification 
           
attacks. Implementing BCP38 within your network would greatly
           
reduce such attack surface 
        
*/
        
recursion 
yes
;
 
        
dnssec-
enable 
no;
        
dnssec-validation no;

 

配置一个从区域:

1)在master DNS上添加NS记录和A记录

在Master上,确保区域数据文件中为每个从服务配置NS记录,并且在正向区域文件需要每个从服务器的NS记录的主机名配置一个A记录,且此A后面的地址为真正的从服务器的IP地址;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$TTL 3600
$ORIGIN wlm.com.
@       IN      SOA     ns1.wlm.com.   dnsadmin.wlm.com. (
        
2014100101    
#如果slave要重载配置,这需要变更序列号
        
1H
        
10M
        
3D
        
1D )
        
IN      NS      ns1
        
IN      NS      ns2    
#NS记录
        
IN      MX   10 mx1
        
IN      MX   20 mx2
ns2     IN      A       10.10.10.10    
#A记录
ns1     IN      A       10.10.10.3
mx1     IN      A       10.10.10.100
mx2     IN      A       10.10.10.200
www     IN      A       10.10.10.4
web     IN     CNAME    www

语法检查并重新配置

1
2
3
4
5
[root@ns1 named]
# named-checkzone wlm.com /var/named/wlm.com.zone 
zone wlm.com
/IN
: loaded serial 2014100101
OK
[root@ns1 named]
# rndc reload
server reload successful

 2) 在slave DNS上定义区域

1
2
3
4
5
6
[root@ns2 ~]
# vim /etc/named.rfc1912.zones 
zone 
"wlm.com" 
IN {
        
type 
slave;    
#slave标记为从服务器
        
file 
"slaves/wlm.com.zone"
#代办区域文件在/var/named/slaves目录下,特定的
        
masters { 10.10.10.3; };    
#填写主域名服务器IP
};

 

书写格式:zone "ZONE_NAME"  IN {    type  slave;    file  "slaves/ZONE_NAME.zone";    masters  { MASTER_IP; };};

3) 重载配置

1
2
配置文件语法检查
named-checkconf
1
2
3
重载配置
rndc  reload
systemctl  reload  named.service

说明:当主域名服务器里添加了新记录,只需要主域名服务器重载配置,从域名服务器自动同步。

验证:

(1)在/var/named/slaves目录下自动同步wlm.com.zone文件

1
2
3
4
[root@ns2 slaves]
# pwd
/var/named/slaves
[root@ns2 slaves]
# ls
wlm.com.zone

(2)可以解析域名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[root@ns2 slaves]
# dig -t A www.wlm.com
 
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.wlm.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, 
id
: 27069
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
 
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.wlm.com.           IN  A
 
;; ANSWER SECTION:
www.wlm.com.        3600    IN  A   10.10.10.4
 
;; AUTHORITY SECTION:
wlm.com.        3600    IN  NS  ns1.wlm.com.
wlm.com.        3600    IN  NS  ns2.wlm.com.
 
;; ADDITIONAL SECTION:
ns1.wlm.com.        3600    IN  A   10.10.10.3
ns2.wlm.com.        3600    IN  A   10.10.10.10
 
;; Query 
time
: 1 msec
;; SERVER: 10.10.10.10
#53(10.10.10.10)
;; WHEN: 三 11月 16 14:20:52 CST 2016
;; MSG SIZE  rcvd: 124

至此,辅域名服务器配置完毕

6、缓存域名服务器配置

在上面的准备工作做完了,默认就配置好了缓存域名服务器。

但是我们这里还有在做两点,为大家更好的理解域名服务器的配置。

 

定义转发:

注意:被转发的服务器必须允许为当前服务做递归;

1) 区域转发:仅转发对某特定区域的解析请求;

配置格式:    	zone  "ZONE_NAME"  IN {    	type  forward;    	forward  {first|only};    	forwarders  { SERVER_IP; };    	};    	first:首先转发;转发器不响应时,自行去迭代查询;    	only:只转发;

 

具体配置:

1
2
3
4
5
6
[root@wlm ~]
# vim /etc/named.rfc1912.zones #在最后面添加
zone 
"wlm.com" 
IN {
        
type 
forward;
        
forward first;
        
forwarders { 10.10.10.3; };
        
};

语法检查,重启bind

1
2
[root@wlm ~]
# named-checkconf 
[root@wlm ~]
# systemctl restart named.service

验证:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[root@wlm ~]
# dig -t A www.wlm.com
 
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.wlm.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, 
id
: 5158
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
 
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.wlm.com.           IN  A
 
;; ANSWER SECTION:
www.wlm.com.        3600    IN  A   10.10.10.4
 
;; AUTHORITY SECTION:
wlm.com.        3600    IN  NS  ns2.wlm.com.
wlm.com.        3600    IN  NS  ns1.wlm.com.
 
;; ADDITIONAL SECTION:
ns1.wlm.com.        3600    IN  A   10.10.10.3
ns2.wlm.com.        3600    IN  A   10.10.10.10
 
;; Query 
time
: 53 msec
;; SERVER: 10.10.10.11
#53(10.10.10.11)
;; WHEN: 三 11月 16 15:20:59 CST 2016
;; MSG SIZE  rcvd: 124

 

 

2) 全局转发:针对凡本地没有通过zone定义的区域查询请求,通通转给某转发器;

配置格式:    	options {    	... ...    	forward  {only|first};    	forwarders  { SERVER_IP; };    	.. ...    	};

具体配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
vim 
/etc/named
.conf
options {
        
listen-on port 53 { 127.0.0.1; 10.10.10.11; };    
# 监听本机的IP端口
        
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     { localhost; };    
# 允许为其他主机解析
        
allow-transfer { none; };          
# 从服务器不需要传送
        
forward first;                     
# 本机不能解析的转发给10.10.10.3做解析
        
forwarders { 10.10.10.3; };        
# 被转发的服务器IP
        
/* 
         
- If you are building an AUTHORITATIVE DNS server, 
do 
NOT 
enable 
recursion.
         
- If you are building a RECURSIVE (caching) DNS server, you need to 
enable 
           
recursion. 
         
- If your recursive DNS server has a public IP address, you MUST 
enable 
access 
           
control to limit queries to your legitimate 
users
. Failing to 
do 
so will
           
cause your server to become part of large scale DNS amplification 
           
attacks. Implementing BCP38 within your network would greatly
           
reduce such attack surface 
        
*/
        
recursion 
yes
;
 
        
dnssec-
enable 
no;    
#关闭    
        
dnssec-validation no;    
#关闭

语法检查然后重启bind

1
[root@wlm ~]
# systemctl restart named.service

验证:

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@wlm ~]
# ping www.baidu.com
PING www.a.shifen.com (220.181.112.244) 56(84) bytes of data.
64 bytes from 220.181.112.244: icmp_seq=1 ttl=128 
time
=6.67 ms
p64 bytes from 220.181.112.244: icmp_seq=2 ttl=128 
time
=6.60 ms
^C
--- www.a.shifen.com 
ping 
statistics ---
2 packets transmitted, 2 received, 0% packet loss, 
time 
1005ms
rtt min
/avg/max/mdev 
= 6.608
/6
.640
/6
.672
/0
.032 ms
[root@wlm ~]
# ping www.wlm.com
PING www.wlm.com (10.10.10.4) 56(84) bytes of data.
^C
--- www.wlm.com 
ping 
statistics ---
2 packets transmitted, 0 received, 100% packet loss, 
time 
1001ms

总结:总体上,DNS的配置还是比较简单的。虽然在日常运维中,可能不需要进行实战,毕竟企业内部部署域名服务器的不多,即使有,也是后期的维护了。但是作为运维人员,熟悉DNS的工作原理是非常必要的,通过这些配置,我相信你已经真正的熟悉了DNS。

本来还想配置子域名服务器的,后来觉得没必要了。具体的逻辑图如下,供大家参考。

转载于:https://www.cnblogs.com/heqiuyu/articles/6600326.html

你可能感兴趣的文章
移动tempdb导致数据库服务不能启动
查看>>
[BEC][hujiang] Lesson04 Unit1:Working life ---Reading + Listening &Grammar & Speaking
查看>>
AspNet GridView Excel 下载 Excel 导出
查看>>
习题整理,二叉树后续遍历得到指定节点到其祖先的路径
查看>>
输入数字和小数点
查看>>
CRUD全栈式编程架构之服务层的设计
查看>>
day8--socketserver作业
查看>>
JAVA自带的加密算法-MD5\SHA1\BASE64
查看>>
React + Redux 实现的个人博客
查看>>
[BZOJ1597][Usaco2008 Mar]土地购买(斜率优化)
查看>>
算法模板——平衡树Treap
查看>>
【BZOJ】1984 月下“毛景树”
查看>>
iOS 枚举器NSEnumerator
查看>>
【CodeForces】913 C. Party Lemonade
查看>>
五张图理解一致性Hash原理
查看>>
转 python数据类型详解
查看>>
【转】Delphi 关键字详解
查看>>
四:Ionic Framework不支持Android4.2.2的解决方法
查看>>
转载:JAR包介绍大全用途作用详解JAVA
查看>>
从零开始学React:二档 React生命周期以及组件开发
查看>>