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的工作原理及过程
当我们打开浏览器输入某个网站,我们是如何通过网络找到主机的呢,下来我来说说域名解析的具体过程,看下图:
具体的过程说明:
我们以上图用户访问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。
本来还想配置子域名服务器的,后来觉得没必要了。具体的逻辑图如下,供大家参考。