DNS原理和CentOS7上bind域名服务器配置详解

本文大纲:

理论部分:

    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的工作原理及过程

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

wKioL1gqxaSAeBUwAAjdXRskaSk352.jpg

具体的过程说明:

我们以上图用户访问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主机。

 

 

域名服务器配置实战:

部署的逻辑图如下:

wKioL1gsCpWgDT3IAAC48AgRrfU955.jpg

 

配置说明:

主域名服务器: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.com
dig -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 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            #别名记录

系统的介绍:
主-辅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, MX

SOA:Start Of Authority,起始授权记录; 一个区域解析库有且只能有一个SOA记录,而且必须放在第一条;
NS:Name Service,域名服务记录;一个区域解析库可以有多个NS记录;其中一个为主的;
A: Address, 地址记录,FQDN --> IPv4;
AAAA:地址记录, FQDN --> IPv6;
CNAME:Canonical Name,别名记录;
PTR:Pointer,IP --> FQDN
MX: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.1
www.magedu.com.	IN A	1.1.1.2
bbs.magedu.com.	IN A	1.1.1.1

AAAA:
name:FQDN
value: IPv6

PTR:
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值