本文大纲:
理论部分:
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.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。
本来还想配置子域名服务器的,后来觉得没必要了。具体的逻辑图如下,供大家参考。