DNS服务器
DNS介绍:
DNS( Domain Name System)是“域名系统”的英文缩写,提供域名解析服务。即将域名(网址)和IP地址进行相互转换,使用TCP和UDP协议的53端口。DNS属于应用层协议。
一.DNS基本概念
1.完全限定域名FQDN:Full Qualified Domain Name
- 即每个域在全球网络都是唯一的;另外值得提到的一点是:域并不是指诸如www.google.com这样的域名,而google.com才是域,请看下面域的空间结构。
- FQDN的组成:主机名+域名。
如www(主机名是www).baidu.com(域名是baidu.com) - 还需要注意的是:域名和IP不是完全一一对应的,即一个域名对应一个IP地址。其实一个域名可以对应多个IP地址;多个域名可以对应一个IP地址。目的很多,如高效率、冗余等。
2.域的空间结构
- 域分类:根域,顶级域,二级域,三级域。
- 域结构:根域最大,顶级域次之,二、三级以此类推
(1) 根域(.)
表示为“.”,全球13组根域名服务器以英文字母A到M依序命名,域名格式为“字母.root-servers.net”。
我们访问域名,根域默认不显示。例如:百度真实域名“www.baidu.com.”,而不是“www.baidu.com”
(2) 顶级域(如.com)
顶级域(Top Level Domain,简称TLD)分为三类
1> 通用顶级域:如 .com(商业机构) .org(非营利性组织) .net(网络服务机构)等
2> 国家顶级域:如 .cn(中国) .uk(英国) .us(美国) .jp(日本)
3> 反向域(基础建设顶级域):.arpa,即从IP到FQDN(域名)的反向解析
(3) 二级域名(如baidu.com)
baidu.com
google.com
taobao.com
等
注意:二级域名是taobao.com
,不是taobao
(4) 三级域名(如www.baidu.com)
www: www.baidu.com
mail: mail.aliyun.com
等
3. DNS服务器查询的类型
- 递归查询:客户端仅发出一次请求,让DNS服务器去查询返回结果;
- 迭代查询:要发出多次请求去分别查询不同的DNS服务器;
总结:
从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间的交互查询就是迭代查询。
4.DNS域名解析方式
(1) 正向解析
将FQDN(域名)转化为IP的解析。
例如:www.mage.com(域名) 转化为 192.168.36.7(IP)
(2) 反向解析
将IP转化为FQDN(域名)的解析。
例如:7.36.168.192.in-addr.arpa.(IP) 转化为 www.magedu.com(域名)
5. DNS服务器类型
- 主DNS服务器:负责解析至少一个域。
- 辅助(从)DNS服务器:负责解析至少一个,是主DNS服务器的辅助。
- 缓存DNS服务器:不负责解析域,只是缓存域名解析结果。
- 权威DNS服务器:存放域名和IP地址相对应的记录信息
6. DNS的监听端口
TCP协议53端口实现DNS主、从同步
UDP协议53端口实现DNS解析,及主、从同步。
二.DNS的域名解析过程
三.DNS和BIND
- Linux使用DNS服务,需要安装软件包,有:
- bind:字符界面、配置简单
- powerdns:WEB界面、配置较复杂
- nbound:CentOS7系统新出现的DNS服务软件
下面主要是bind软件的说明
- 查看系统已有BIND程序包:rpm -ql bind
- 查看BIND相关程序包:yum list all bind*
- bind:服务器软件包
- bind-libs:相关库
- bind-utils:客户端
- bind-chroot: /var/named/chroot/
安装bind后,会新生成一个“named用户”和“named用户组”,用来专门启用、管理bind服务(DNS服务)。查看“named用户”命令“cat /etc/passwd”,家目录在“/var/named”,shell类型是“/bin/false”。安装bind软件包后,解压的“/var/named/named.ca”文件存放了互联网中13个根服务器,帮助提供域名解析。
安装:yum -y install bind
启动服务:systemctl start named
开机自启:systemctl enable named
查看DNS服务使用的端口是TCP和UDP的53,命令是ss -ntlup
查看DNS进程所使用的用户:"ps aux|grep named"会看到是“named用户”
DNS数据库路径:/var/named
DNS服务配置文件:/etc/named.conf
修改DNS服务配置文件后,生效有两种办法:方法一,重启named服务;方法二,加载配置文件而不关掉服务在启动服务,这样避免对当前正在访问的用户产生干扰。生效命令:rndc reload 或者 systemctl reload named
1.DNS服务配置文件:/etc/named.conf
- 每行以分号“;”结尾
- 注释行用两个斜线“//”
- “options”为选项,配置DNS很多需要在选项里修改
- “logging”为DNS的日志
- “zone”为DNS的区域信息。用来解析“域名和域名存放在某个DNS数据库之间的映射关系”。
(1) “options”为选项
1> listen-on port 53 { XXX };
- 上面行表示53段口绑定本机的哪个IP地址进行DNS解析,可把“XXX”配置成192.168.36.7,表示53端口绑定本机的192.168.36.7进行DNS解析服务。
- 表示本机所有IP地址:把“XXX”配置成“localhost”,或者注释此行(行首加两个斜线)。
2> allow-query { localhost; };
- 上面行表示“允许谁向我查询”。“localhost”表示只允许本机查询。
- 想要其它电脑通过本机查询,即DNS解析,就把“localhost”改为:
- “对方网段”---适用局域网进行DNS解析
- “对方网络”---适用局域网进行DNS解析
- “any”--------适用互联网进行DNS解析
注意:any表示所有,把此行用两个斜线注释,也表示所有主机查询
(2)"zone"为区域
- 解析 “域名” 和 “域名存放在某个DNS数据库(就是一个文件)” 之间的映射关系
例如有:域名(magedu.com)、DNS数据库名(magedu.com.zone)。他们两个一一对应,这种映射关系就写到“zone”里。(说明:DNS数据库magedu.com.zone存放了magedu.com域名对应的IP地址)
- zone区域分为:正向区域(正向解析) 和 反向区域(反向解析)
域名 和 反向区域数据库 的映射关系:
例:36.168.192.in-addr.arpa.(域名) 和 192.168.36.zone(数据库名)
域名 和 正向区域数据库 的映射关系:
例:magedu.com(域名) 和 magedu.com.zone(数据库名)
## 四.DNS测试工具
除了系统提供的一些名称解析命令外,DNS的客户端软件包“bind-utils”当中提供了一些测试命令,这些命令是:dig、host、nslookup。
### 1. 测试工具
-
dig用于测试dns系统,因此,不会查询hosts 文件进行解析;
1> dig命令的语法: dig[-t type]name[@SERVER][query options]
查询选项:+[no]trace 跟踪解析过程 / +[no]recurse 进行递归解析 测试反向解析: dig -x IP@SERVER 模拟区域传送: dig -t axfr ZONE_NAME @SERVER
2> 示例1:dig www.baidu.com
显示结果中: DNS是否解析成功,查看“ANSWER SECTION”部分 提供DNS解析主机的IP地址,查看“显示结果底部SERVER行”
3> 示例3:dig www.magedu.com @192.168.36.7
本机向192.168.36.7请求解析www.magedu.com(适用临时测试) 显示结果中:可看到www.magedu.com的权威服务器是101.200.188.230, 因为域名和IP的对应关系存放在此服务器,而192.168.36.7没有 存放对应关系,所以不是www.magedu.com的权威服务器。 如果192.168.36.7是www.magedu.com的权威服务器,在显示结果中, 上面部分的“flags行”后面,会出现“aa”
-
host命令语法: host [-a] name [SERVER]
示例1:host www.baidu.com
示例2:host www.baidu.com 192.168.36.7 本机向192.168.36.7请求解析www.baidu.com(适用临时测试)
-
nslookup [-option][name |-] [server]
交互式模式: nslookup> server IP:指明使用哪个DNS server 进行查询; set q=RR_TYPE:指明查询的资源记录类型; NAME:要查询的名称;
**检查命令**
检查主DNS服务器的配置文件是否错误:named-checkconf 说明:检查/etc/named.conf文件和/etc/named.rfc1912.zones文件
检查区域数据库的文件是否错误:named-checkzone 域名 域名对应数据库的文件 例如:named-checkzone magedu.com /var/named/magedu.com.zone 说明:检查magedu.com域对应的数据库文件magedu.com.zone是否有错误
### 2. rndc命令
rndc --> rndc (953/tcp端口)
格式:rndc COMMAND
常用COMMAND如下: reload: 重载主配置文件和区域解析库文件 reload zonename: 重载区域解析库文件 retransfer zonename: 手动启动区域传送,而不管序列号是否增加 notify zonename: 重新对区域传送发通知(“推”同步) reconfig: 重载主配置文件 querylog: 开启或关闭查询日志文件/var/log/message trace: 递增debug一个级别(级别调试的越高,跟踪日志就更详细) trace LEVEL: 指定使用的级别(级别越高,跟踪日志就更详细) notrace:将调试级别设置为 0 flush:清空DNS服务器的所有缓存记录
## 五.资源记录(RR)
* 资源记录:Resource Record, RR
* 区域(zone)解析(数据)库:由众多RR组成
* 记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
* 作为一个DNS区域数据库文件,必须有SOA、A、NS记录,其他记录根据企业情况来加
SOA:Start Of Authority,起始授权记: 一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录
A:internet Address,作用:域名正向解析成IPv4地址
AAAA:作用:域名正向解析成IPv6地址
PTR:PoinTeR,作用:IPv4地址反向解析成域名
NS:Name Server,专用于标明当前区域的DNS服务器
CNAME : Canonical Name,别名记录
MX:Mail eXchanger,邮件交换器
TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项。 如:SPF(反垃圾邮件)记录,https验证等
### 1. 资源记录定义的格式
语法:name [TTL] IN rr_type value
说明:
(1)name:表示主机名。如blog.magedu.com.默认magedu.com.可不写,因为域名就是它,而资源记录是域名对应数据库,当中的某一行。“name”写blog会默认为blog.magedu.com.(注意blog后面不可加“.”,不然表示结束)
(2)TTL:表示“DNS缓存时长,一般TTL会统一设置,如“$TTL 1D”表示1天(全局继承);也可在每行记录的“TTL”位置自己设置时间,默认单位是秒
(3) IN:表示Internet(互联网)
(4) rr_type:表示记录的类型
(5) value:记录对应的值。如A记录对应的值是IP地址
注意: (1) @可用于引用当前区域(即域名)的名字。如 :magedu.com.(@常用在SOA记录的“name”位置) (2) 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应 (3) 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机
### 2. SOA记录
SOA记录示例:@ TTL IN SOA dns1.magedu.com.
name: 当前区域的名字,例如“magedu.com.”或者用“@”表示当前区域名字
value(值): 有多部分组成。如下
(1) 这个域的主DNS服务器的域名。如dns1.magedu.com.
注意: 配置SOA记录后,必须有一条A记录,因为SOA的值,即域名,要有对应的IP。 (对于SOA记录,任何一个SOA记录后面的服务器名字,都应该在后续有一个A记录)
示例:DNS区域数据库文件中:SOA记录和对应的A记录 SOA:@ TTL IN SOA dns1(“.magedu.com.”不用写,默认它存在) A:master TTL IN A IP地址(如192.168.36.7)
(2) 这个域的管理员的邮箱地址。注意地址中不能使用@符号,一般用.替换。 示例:admin.magedu.com(对应邮箱是admin@magedu.com)
(3) 当前数据库和从DNS服务器的同步策略 同步策略类型:推和拉
1>推:以主服务器为主,当主服务器发生变化,推送消息给从服务器
数据库版本号写在SOA记录的value(值)后面的括号里的第一个位置。
例:@ TTL IN SOA dns1 (201904221015)
说明:
触发条件:主服务器的数据库更新。
当数据库的版本号(必须是整数)发生变化,视为更新;
而不是数据库内容发生变化。
2>拉:以从服务器为主,主动问主服务器是否发生变化
轮询的时间间隔写在版本号后面,默认单位是秒。
也可写其他时间,如10m(10分钟)。表示每10分钟询问一次。
例:@ TTL IN SOA dns1 (201904221015 10m)
说明:
以轮询(过一会问一下,过一会问一下)的方式,
询问主服务器的数据库文件是否发生变化。
3>重试时间间隔:
重试时间间隔写在轮询间隔后面,默认单位是秒。
例:@ TTL IN SOA dns1 (201904221015 10m 2m)
说明:
假如轮询间隔是10分钟。当第一次轮询,没有同步,
又不想等一下次轮询(即不想等10分钟后在询问),
可设置重试时间间隔,默认单位是秒。如设置2分钟。
即第一次没结果后,2分钟后在询问主DNS数据库是否变化(版本号是否改变)。
4>从DNS服务器对应数据库记录的过期时长
从服务器数据库记录的过期时长,写在重试时间间隔后面,默认单位是秒。
例:@ TTL IN SOA dns1 (201904221015 10m 2m 1D)-->"1D"为1天
说明:
如果第一次轮询,数据库没有同步,
第二次重试时间及2分钟后也没有同步,
那么会认为从DNS服务器的数据库记录老旧
5>不存在的记录的缓存时长
不存在的记录的缓存时长,
写在“从DNS服务器的数据库记录,的过期时长”后面,默认单位是秒。
例:@ TTL IN SOA dns1 (201904221015 10m 2m 1D 6H)-->"6H"为6小时
说明:
当访问某个域名,www写成wwwww,用户的本地DNS服务器会返回此记录不存在。
因为数据库没有这样的记录。但不能不管,因为有可能其他人犯这样的错误,
所以设置不存在记录的缓存时长,过了时间后,就会清除。
### 3. NS记录
* 由NS记录可以知道网络中有几个DNS服务器
* NS记录:指明当前区域里,谁是主DNS服务器、谁是从DNS服务器
* name: 当前区域的名字,例如“magedu.com.”或者用“@”表示当前区域名字
* value(值): 当前区域的某DNS服务器的名字,例如ns2.magedu.com
注意:
(1)对于NS记录,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
示例:
NS:magedu.com. TTL IN NS ns2.magedu.com.
A:ns2.magedu.com. TTL IN A IP地址(如192.168.36.8)
(2)相邻的两个资源记录的name相同时,后续的可省略
(3)一个区域可以有多个NS记录
例如:
NS记录
magedu.com. IN NS ns1.magedu.com.(TTL没写,就继承全局的TTL)
magedu.com. IN NS ns2.magedu.com.(TTL没写,就继承全局的TTL)
对应的A记录
ns1.magedu.com. TTL IN NS IP地址
ns2.magedu.com. TTL IN NS IP地址
从上面的NS记录可以知晓,网络中有三个DNS服务器,分别是:
主DNS服务器:magedu.com
从DNS服务器:ns1.magedu.com
从DNS服务器:ns2.magedu.com
### 4. A记录
* name: 某主机的FQDN(域名),例如:www.magedu.com.
* value: 主机名对应主机的IP地址
#### 示例1:
A记录示例: www.baidu.com. TTL IN A IP地址 也可以写成: www TTL IN A IP地址 (因为baidu.com.会默认存在,因为这是baidu.com域的数据库文件)
#### 示例2:
通过A记录可以实现:一个域名对应多个IP地址。例如一个网站的页面由3个服务器提供,并且内容一致。当一个服务器坏掉,不影响用户访问网页的解析服务,因为有另一个服务器。
在magedu.com区域的DNS数据库文件里,添加A记录,使得一个域名对应多个IP地址,进行解析,实现冗余功能。
webserver TTL IN A 192.168.1.2
webserver TTL IN A 192.168.1.3
webserver TTL IN A 192.168.1.4
#### 示例3:泛域名解析
泛域名概念:当用户访问www.baidu.com时,把www写成wwwwwww,通过设置泛域名即可把本域(这里是baidu.com)写错的域名指定某一web主机的web页面,这里起个名字叫“错误页面”。目的是:达到不会访问不了,在“错误页面”指定本域首页
泛域名和上面的某某记录在一个文件,格式是:
*(表示所有) TTL IN A IP地址
#### 示例4:指定访问二级域名
直接写二级域名,有些网站访问不了。如www.boc.cn(中国银行),不写www访问不了。
解决方法: 和上面的某某记录在一个文件,格式是: @ TTL IN A IP地址
记得重新加载DNS的配置文件“rndc reload”
#### 示例5:GENERATE语句
功能:生成多条A记录。 如:访问server1,返回结果是1.1.1.1;访问server2,返回结果是1.1.1.2;访问server100,返回结果是1.1.1.100等等,如下面的示例
和上面的某某记录一样,书写在同一个文件,格式是: $GENERATE 1-100 server$(名称) A 1.1.1.$(IP地址)
添加上面记录后,修改版本号,使用“rndc reload”生效,在DNS客户端使用“dig 域名”验证
### 5. 别名记录CNAME
* name: FQDN(域名)的别名名称
* value: 真正FQDN(域名)的名字
* 别名记录经常用于CDN加速。
* 设置别名,可以把本机解析委托给其他主机进行解析
* 例如:www TTL IN CNAME dns.aliyun.com(将本机解析,委托主机名是“dns.aliyun.com”的解析)
在企业里,部署的域名其实很长,通过设置别名,让用户更容易访问,如下:
域名:bj-tam-web-node1-100-23.magedu.com 说明:北京拼音字母首写--天安门区域拼音字母首写--web服务器--节点1--IP地址的后两位--域名
magedu.com域名的DNS数据库文件中的别名记录,如下: www TTL IN CNAME bj-tam-web-node1-100-23
实现:访问www.magedu.com其实是访问bj-tam-web-node1-100-23.magedu.com
**注意**
一般设置某DNS服务器的A记录,添加两个A记录,对应IP地址不同,可实现均衡负载的作用。而且,在主配置文件,添加一条别名记录,用户访问DNS服务器更简单。而管理员最好访问DNS服务器真正的名字,因为存在节点、地域等标识,可以清楚知道是哪台DNS服务器。
### 6. MX 邮件记录
* MX: Mail eXchanger,邮件交换器
* 邮件发送需要域内DNS服务器的帮助,根据DNS配置,找到MX记录,就找到邮件转发器。
* name: 当前区域的名字
* value: 当前区域的某邮件服务器(smtp服务器)的主机名
* 一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-
99),表示此服务器的优先级;数字越小优先级越高
* 例如:
magedu.com. TTL IN MX 10 mx1.magedu.com.
magedu.com. TTL IN MX 20 mx2.magedu.com
* **注意**: 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
查询某域名的邮件服务器:dig -t mx 二级域名
## 六.DNS服务器的ACL
### 1. 概述
* bind(DNS服务器)中基础的安全相关的配置:
* acl: 把一个或多个地址归并为一个集合,并通过一个统一的名称调用
* bind有四个内置的acl:none,any,localhost,localnet
* 注意:只能先定义ACL后使用;因此一般定义在配置文件中,处于options模块的前面
总结: 在DNS服务器里,内置了一些访问控制列表(ACL)。功能:定义地址集合。系统自带的ACL如localhost(本机所有IP)、any(所有任意IP0)、none(没有一个IP)、localnet(DNS服务器属于哪个网段,这个网段就是localnet)
### 2. 格式和示例
格式: acl acl_name { ip; net/prelen; …… };
示例: acl mynet { 172.16.0.0/16; 10.10.10.10; };
### 3. 访问控制的指令
* allow-query {}: 允许查询的主机;白名单
* allow-transfer {}:允许区域传送的主机;白名单
* allow-recursion {}: 允许递归的主机,建议全局使用
* allow-update {}: 允许更新区域数据库中的内容
### 4. 示例
只在局域网使用DNS,并且只给局域网的某些网段提供解析服务
(1)打开文件“/etc/named.conf”
(2)在options模块的前面,添加ACL,如下:
acl lannet(局域网名) {
192.168.238.0/24(网段);
192.168.234.0/24(网段);
};
(3)在options模块的“allow-query”添加局域网名和本机的所有IP(不添加本机所有IP,你自己就不会解析自己),如下: allow-query { lannet;localhost; };
(4)使配置生效 rndc reload
## 七.智能CDN
### 1. 概述
CDN:Content Delivery Network内容分发网络
提供CDN服务商:蓝汛,网宿,帝联等都是专做CDN服务
CDN又称为智能DNS,意思是:上海用户查询网站A(存放网站A的服务器上海和北京都有),“网站A公司”的主DNS服务器会让“存放在上海的子DNS服务器”查询上海用户的请求,返回给客户端结果,即离客户端最近的DNS服务器给客户端解析。注意:此公司在北京和上海的服务器上,网页内容都一致。
如果你的公司在全国各地没有机房,就无法进行DNS解析和提供WEB页面的浏览。所以一般是大公司(如阿里)才会搭建智能DNS,大多数普通的公司,都是购买大公司的服务,来实现公司的智能DNS。即:把WEB文件放到租用的CDN节点服务器上(CDN服务商的电脑),并定义域名的别名,别名的IP地址是租用的CDN节点服务器的IP地址。
### 2. 用户访问具有智能DNS网站的过程:
![](https://s1.51cto.com/images/blog/201905/13/2272f3a16d18db9c78198427dd642bbe.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
1.将我的网站文件放到租用CDN机房的某些服务器上,并定义别名
2.用户访问http:www.a.com,请求发送到用户网络的本地DNS服务器(LDNS)
3.本地DNS服务器(LDNS)查询有没有http:www.a.com的IP地址,没有就从根服务器进行迭代查询
4.查询到a.com服务器的权威服务器(网站授权DNS),而权威服务器不会把IP地址给用户,而是返回域名的别名(www.a.tbcdn.com)
5.本地DNS服务器(LDNS)就认为http:www.a.com是http:www.a.tbcdn.com的别名,就会查询http:www.a.tbcdn.com的IP地址
6.http:www.a.tbcdn.com其实是CDN服务商的服务器(DNS调度系统),这个服务器有智能功能,里面记录了全国或全世界,各地对应的IP地址。收到北京用户的请求后,会返回北京CDN对应的IP地址(2.2.2.2),收到上海用户的请求后,会返回上海CDN对应的IP地址(9.9.9.9)
7.北京用户知道IP后,就会请求在北京CDN的节点服务器(2.2.2.2),改服务器返回内容给用户
8.当租用CDN服务器上的网页没来得及更新数据,北京用户访问时,北京CDN服务器会请求WEB页面的源服务器,更新数据后在返回给北京的用户。
### 3. 示例:企业网站内部实现智能CDN功能(即下面的实验6)
## 八.压力测试
* /root/bind-xxx/contrib/scripts
* 编译压力测试工具
> [root@centos7dns ~]# cd /root/bind-xxx/contrib/queryperf
> [root@centos7dns ~]# ./configure
> [root@centos7dns ~]# make
> [root@centos7dns ~]# cp queryperf /usr/local/bind9/bin
> [root@centos7dns ~]# queryperf -h
* 压力测试:
> [root@centos7dns ~]# vim test.txt
>> www.magedu.com A
>> magedu.com NS
>> magedu.com MX
>> pop3.magedu.com A
>> web.magedu.com A
> [root@centos7dns ~]# queryperf -d test.txt -s 127.0.0.1
* 打开日志功能:
> [root@centos7dns ~]# rndc querylog
> [root@centos7dns ~]# rndc status
> [root@centos7dns ~]# queryperf -d test.txt -s 127.0.0.1
> [root@centos7dns ~]# wc -l /var/log/message
## 九. DNS排错
* [root@centos7dns ~]# dig A example.com
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> A example.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30523 ... SERVFAIL:The nameserver encountered a problem while processing the query.
* 可使用dig +trace排错,可能是网络和防火墙导致
* NXDOMAIN:The queried name does not exist in the zone.
> 可能是CNAME对应的A记录不存在导致
* REFUSED:The nameserver refused the client's DNS request due to policy restrictions.
> 可能是DNS策略导致
* NOERROR不代表没有问题,也可以是过时的记录
* 查看是否为权威记录,flags:aa标记判断
* 被删除的记录仍能返回结果,可能是因为*记录存在
* 如:*.example.com. IN A 172.25.254.254
* 注意“.”的使用
* 避免CNAME指向CNAME记录,可能产生回环
> test.example.com. IN CNAME lab.example.com.
> lab.example.com. IN CNAME test.example.com.
* 正确配置PTR记录,许多服务依赖PTR,如sshd,MTA
* 正确配置轮询round-robin记录
## 十.实验
企业环境中,需要把DNS服务用到的端口在防火墙里信任。做实验把防火墙、selinux关掉就可以了。
在防火墙关闭TCP协议53端口:iptables -A INPUT -p tcp --dport 53 -j REJECT 在防火墙关闭UDP协议53端口:iptables -A INPUT -p udp --dport 53 -j REJECT 清空防火墙全部配置:iptables -F
* 主、从DNS服务器可以实现冗余备份、高效率等功能
* 主、从DNS服务器之间是同步的,两者之间的数据需一致
* 主DNS服务器:负责更新(主要)数据、对用户提供解析,管理这个域。可以带多个从DNS服务器。
* 从DNS服务器:负责同步(主要)数据、对用户提供解析,备份这个域。主DNS坏掉,从DNS还可以继续工作,实现冗余。
### 1. 正向解析主服务器
#### (1) 安装DNS包
yum -y install bind
#### (2) 启动DNS服务
systemctl start named
#### (3) 修改DNS主配置文件/etc/named.conf
vim /etc/named.conf
1> 注释以“listen-on”“allow-query”开头的两行,即在这两行前面加两个斜线
2> 安全设置:
指定哪些从DNS服务器可以同步主DNS服务器的数据,可设置多个
示例:在allow-query的上一行添加
allow-transfer {从DNS服务器的IP地址;};
如果不设置此安全命令,在DNS客户端使用“dig -t axfr magedu.com(主域名) @DNS服务器IP地址”可以直接看到DNS服务器的记录。
#### (4) 打开专门存放区域(zone)数据库文件的配置文件
vim /etc/named.rfc1912.zones
参照区域“zone”的格式,新增区域,**创建域名和数据库名的映射关系**,如下:
zone "域名(如magedu.com)" IN {
type(类型) master(主DNS服务器);
file(文件) "之后创建:DNS数据库的文件名(如magedu.com.zone)";
};
注意:
- magedu.com不要写成www.magedu.com。因为我们要解析magedu.com的很多子域(主机),而不单单是www.magedu.com这一个域(主机)。 2.DNS数据库名的后缀“.zone”可以是任何字符,如“.abc”
**检查错误**
检查主DNS服务器的配置文件是否错误:named-checkconf
说明:检查/etc/named.conf文件和/etc/named.rfc1912.zones文件
#### (5) 创建区域(zone)数据库文件
/var/named是专门存放DNS数据库文件的文件夹,查看DNS主配置文件“/etc/named.conf”,其中directory行表示存放DNS数据库文件的路径
创建区域(zone)数据库文件:
区域(zone)数据库文件可根据“named.localhost”文件为模板,复制一份进行修改,就变成自己的数据库文件了。 [root@centos7dns ~]# ll /var/named total 16 drwxrwx--- 2 named named 23 Apr 24 00:31 data drwxrwx--- 2 named named 35 Apr 24 00:31 dynamic -rw-r----- 1 root named 2281 May 22 2017 named.ca -rw-r----- 1 root named 152 Dec 15 2009 named.empty -rw-r----- 1 root named 152 Jun 21 2007 named.localhost -rw-r----- 1 root named 168 Dec 15 2009 named.loopback drwxrwx--- 2 named named 6 Jan 30 01:23 slaves [root@centos7dns ~]#
创建区域(zone)数据库文件,保留原有属性 cp -p /var/named/named.localhost /var/named/magedu.com.zone
#### (6 ) 修改区域(zone)数据库文件
区域(zone)数据库文件的内容,是由一行一行的区域数据记录而成。这一行行内容就叫“资源记录(RR)”。
* 区域数据库文件里必须包含SOA记录、NS记录、A记录
修改区域数据库文件内容如下图
![](https://s1.51cto.com/images/blog/201904/23/fd56d01f1789d6d3179708fff41b9d3d.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
**检查错误**
检查区域数据库的文件是否错误:
named-checkzone magedu.com /var/named/magedu.com.zone
#### (7) 使配置生效
[root@centos7dns ~]# rndc reload server reload successful(成功) [root@centos7dns ~]#
#### (8) 验证
**临时验证**
在客户端使用测试命令
格式:dig 域名主机 @DNS解析服务器
示例:dig dbserver1.magedu.com @192.168.238.134
dbserver1.magedu.com由数据库文件
![](https://s1.51cto.com/images/blog/201904/23/05b116771f9ac2eefd361e6c7c32d170.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
**永久验证**
在客户端的网卡配置文件里,DNS设置为“主DNS服务器”的IP地址
******************************************************
### 2. 反向解析主服务器
* 使用PTR记录。注意:考虑“将哪个IP地址段”解析成域名
* 在区域(zone)中,注意“反向解析域名”的书写格式
#### (1) 安装DNS包
yum -y install bind
#### (2) 启动DNS服务
systemctl start named
#### (3) 修改DNS主配置文件/etc/named.conf
vim /etc/named.conf
注释以“listen-on”“allow-query”开头的两行,即在这两行前面加两个斜线
#### (4) 打开专门存放区域(zone)数据库文件的配置文件
vim /etc/named.rfc1912.zones
参照反向解析区域“zone”的格式,新增区域,**创建域名和数据库名的映射关系**,如下:
zone "域名(如238.168.192.in-addr.arpa)" IN {
type(类型) master(主DNS服务器);
file(文件) "之后创建:DNS数据库的文件名(如192.168.238.zone)";
};
**检查错误**
检查主DNS服务器的配置文件是否错误:named-checkconf
说明:检查/etc/named.conf文件和/etc/named.rfc1912.zones文件
#### (5) 创建区域(zone)数据库文件
/var/named是专门存放DNS数据库文件的文件夹,查看DNS主配置文件“/etc/named.conf”,其中directory行表示存放DNS数据库文件的路径
创建反向解析区域(zone)数据库文件:
区域(zone)数据库文件可根据“named.loopback”文件为模板,复制一份进行修改,就变成自己的数据库文件了。 [root@centos7dns ~]# ll /var/named total 16 drwxrwx--- 2 named named 23 Apr 24 00:31 data drwxrwx--- 2 named named 35 Apr 24 00:31 dynamic -rw-r----- 1 root named 2281 May 22 2017 named.ca -rw-r----- 1 root named 152 Dec 15 2009 named.empty -rw-r----- 1 root named 152 Jun 21 2007 named.localhost -rw-r----- 1 root named 168 Dec 15 2009 named.loopback drwxrwx--- 2 named named 6 Jan 30 01:23 slaves [root@centos7dns ~]#
创建区域(zone)数据库文件,保留原有属性 cp -p /var/named/named.loopback /var/named/192.168.238.zone
#### (6 ) 修改区域(zone)数据库文件
* 区域数据库文件里必须包含SOA记录、SOA对应的A记录、NS记录
修改区域数据库文件内容如下
[root@centos7dns ~]# cat /var/named/238.168.36.zone $TTL 1D @ IN SOA master admin.magedu.com. ( 1 ; serial 1H ; refresh 10M ; retry 12H ; expire 1D ) ; minimum
NS master 192.168.238.134
master A 192.168.238.134 134 PTR webserver1.magedu.com.
[root@centos7dns ~]#
#### (7) 使配置生效
[root@centos7dns ~]# rndc reload server reload successful(成功) [root@centos7dns ~]#
***********************************************************
### 3. 正向从(辅助)服务器
* 目标:实现数据的自动同步
#### (1) 安装DNS包
yum -y install bind
#### (2) 启动DNS服务
systemctl start named
#### (3) 修改DNS主配置文件/etc/named.conf
vim /etc/named.conf
1> 注释以“listen-on”“allow-query”开头的两行,即在这两行前面加两个斜线
2> 安全设置:
指定,不允许任何服务器同步DNS的数据
示例:在allow-query的上一行添加
allow-transfer {none;};
此处配置可以指定某从DNS服务器同步本机DNS数据,即“none”改为“从DNS服务器IP地址”
如果不设置此安全命令,在DNS客户端使用“dig -t axfr magedu.com(主域名) @DNS服务器IP地址”可以直接看到DNS服务器的记录。
#### (4) 打开专门存放区域(zone)数据库文件的配置文件
vim /etc/named.rfc1912.zones
参照区域“zone”的格式,新增区域,**创建域名和数据库名的映射关系**,如下:
zone "域名(如magedu.com 这里写的是主域名)" IN {
type(类型) slave(从DNS服务器);
masters {192.168.238.134;};《---》指定主DNS服务器
file(文件) "之后创建:从DNS数据库的文件名(如: slaves/magedu.com.slave)";
};
注意:"/slaves"表示:把从DNS服务器的zone配置文件放到此文件夹,也推荐放到此文件夹
#### (5) 重启DNS服务,同步主DNS服务器区域(zone)数据库文件到“/var/named/slaves”目录
1> 重启DNS服务 systemctl restart named 2> 查看同步的区域(zone)数据库文件(注意权限等信息) ll /var/named/slaves
注意:“/var/named/slaves/magedu.com.slave”不是普通文件,看不到里面内容,用来防止信息泄露。可用“file /var/named/slaves/magedu.com.slave”查看“magedu.com.slave”文件的类型
#### (6) 使配置生效
[root@centos7dns ~]# rndc reload server reload successful(成功) [root@centos7dns ~]#
#### (7) 验证
* 验证:DNS的冗余和主、从DNS服务器的同步
* 验证设备:主DNS服务器、从DNS服务器、DNS客户端
DNS的冗余:
1> 在DNS客户端使用命令"dig dbserver1.magedu.com"查询解析“dbserver1.magedu.com”域名的DNS服务器是谁。可以看到,在结果最下面“行SERVER”显示DNS解析服务器是某某某
2> 关闭主DNS服务器主机或禁用网络,在DNS客户端使用命令"dig dbserver1.magedu.com"查询解析。查看是不是从DNS服务器解析
3> 关闭从DNS服务器,恢复主DNS服务器,在DNS客户端使用命令"dig dbserver1.magedu.com"查询解析。查看是不是主DNS服务器解析
主、从DNS服务器的同步:
1> 在主DNS服务器,其“/var/named/magedu.com.zone”文件添加一个A记录 k8s TTL IN A 6.6.6.6
2> 主、从DNS服务器同步 同步机制分两种: 推(主DNS推送给从DNS。注意:需要设置推送的命令才能实现)和 拉(根据同步时间等待同步。注意:如果版本号没发生变化,就不会同步)
推:在主DNS服务器的“/var/named/magedu.com.zone”文件添加从DNS服务器
第一步:@ TTL IN NS slave
第二步:slave TTL IN A 192.168.238.128(从DNS服务器IP地址)
第三步:更改版本号,加1
3> 在主DNS服务器上,重新加载DNS配置文件 rndc reload
4> 关闭主DNS服务器网络
5> 在DNS客户端,使用“dig k8s.magedu.com”是否能解析成功
************************************************************
### 4. 子域服务器
* 创建子域有两种情况:
* 父域和子域在同一主机。适用访问量小的
* 父域委派子域到另一台服务器(不同主机,使用“粘合记录”)。适用访问量大的
#### (1) 父域和子域在同一台主机
方法一:创建一条A记录
* 将父域和子域放到一个文件,缺点是父、子域的记录混杂
在主DNS服务器(即父域magedu.com)的配置文件里,给子域(www.shanghai.magedu.com)添加一条A记录,如下:
第一步:vim /var/named/magedu.com.zone www.shanggai TTL IN A 1.1.1.1(IP地址) 第二步:更改版本号 第三步:保存退出 第四步:使用“rndc reload”命令生效 第五步:在DNS客户端,使用“dig www.shanghai.magedu.com”验证子域IP地址是不是1.1.1.1
方法二:创建一个独立的域
* 在“/etc/named.rfc1912.zones”文件里,除了父域“magedu.com”,在新建一个父域的子域“shenzhen.magedu.com”,如下:
第一步:编辑“/etc/named.rfc1912.zones”文件,创建子域区域(zone)
[root@centos7dns ~]# vim /etc/named.rfc1912.zones zone "shenzhen.magedu.com" IN { type master; file "shenzhen.magedu.com.zone"; };
第二步:以父域"magedu.com"配置文件"magedu.com.zone"为模板,复制一份,改名"shenzhen.magedu.com.zone",当做子域“shenzhen.magedu.com”的配置文件
[root@centos7dns ~]# cp -p /var/named/magedu.com.zone /var/named/shenzhen.magedu.com.zone
第三步:编辑子域“shenzhen.magedu.com”的配置文件,如图:
![](https://s1.51cto.com/images/blog/201905/07/e79cf9f4f4b02d9606cf3fca5d27c3ec.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
第四步:使用“rndc reload”命令生效
第五步:使用DNS客户端命令验证,如图:
![](https://s1.51cto.com/images/blog/201905/07/80d5bee39728d37f638ff162b03e1caa.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
#### (2) 父域委派子域到另一台服务器上
* glue record:粘合记录,父域授权子域的记录
* 父域:magedu.com;子域:chengdu.magedu.com
* 思路:在父域的配置文件,指定访问子域“chengdu.magedu.com”的位置。
第一步:
在父域(主域)DNS数据库的配置文件“/var/named/magedu.com.zone”里,加入委派记录(粘合记录):即NS记录和NS对应的A记录。(如下图红框)
注意:下图中,“委派DNS主机” 和 “从DNS服务器”的IP地址一样,是因为我把"从DNS服务器"当做新创建的“主DNS服务器”(懒得配置了)
![](https://s1.51cto.com/images/blog/201905/08/099316898c628ceae079a564a9fc81a0.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
第二步:
在委派主机上,创建主DNS服务器,即在IP地址是192.168.238.128的主机是创建。(可参考上面创建主DNS服务器的实验)
第三步:
编辑委派主机的“/etc/named.rfc1912.zones”文件,添加子域的zone区域 [root@centos7 ~]# vim /etc/named.rfc1912.zones
zone "chengdu.magedu.com" IN {
type master;
file "chengdu.magedu.com.zone";
};
第四步:
````
编辑DNS数据库文件,即在“/var/named”目录创建的DNS数据库配置文件(var/named/chengdu.magedu.com.zone)。
[root@centos7 ~]# cat /var/named/chengdu.magedu.com.zone
$TTL 1D
@ IN SOA master admin.magedu.com. (
20190427 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.238.128
webserver2 A 3.3.3.3
www CNAME webserver2
[root@centos7 ~]#
````
第五步:
````
在主DNS服务器(192.168.238.134)执行生效命令“rndc reload”
在委派DNS服务器(192.168.238.128)执行生效命令“rndc reload”
````
第六步:
````
在DNS客户端测试:(如下图)
[root@centos6dns ~]# dig www.chengdu.magedu.com @192.168.238.128
[root@centos6dns ~]# dig www.chengdu.magedu.com @192.168.238.134
结论:由下面两张图的结果可以得知,用户访问“www.chengdu.magedu.com”域,用户的主机先向“192.168.238.134”主机请求解析“www.chengdu.magedu.com”域的IP地址,“192.168.238.134”主机没有“www.chengdu.magedu.com”域的IP地址,就查找子域,发现“192.168.238.128”主机有“www.chengdu.magedu.com”域的IP地址,就委派给“192.168.238.128”主机解析域名,从而让用户正常访问网站。这就是委派主机。
````
![](https://s1.51cto.com/images/blog/201905/08/b68c7f8ad5cf6e9240972355ed8ba6df.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
![](https://s1.51cto.com/images/blog/201905/08/e0dce8776ad19355e966c4fc476a9b2b.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
### 5. 转发(缓存)服务器
* 迭代查询是:查询根及根下面的DNS服务器。而转发服务器可以查询非根的DNS服务器
* 注意:被转发的服务器需要能够为请求者做递归查询,否则转发请求不予进行
* 转发服务器有两种转发策略“first和only”
* first:“本地DNS服务器”向“域内主、从DNS服务器”请求域名解析,如果没有,“本地DNS服务器”自己向“根服务器”迭代查询
* only:“本地DNS服务器”向“域内主、从DNS服务器”请求域名解析,如果没有就不找了
````
大致过程:
创建并配置DNS转发服务器,
接着在主DNS服务器的主配置文件“/etc/named.conf”里,添加:
forward first(或only); --->转发策略
forwarders {192.168.238.128;(转发服务器的IP地址)} --->转发给谁
说明:这两行表示,先转发给转发服务器查询,如果没有,我自己在互联网查询
````
(1). 安装DNS包
(2). 启动DNS服务
(3). 修改DNS主配置文件/etc/named.conf
(4). 修改区域(zone)数据库文件的配置文件
````
编辑“/etc/named.rfc1912.zones”文件
zone "wangge.com" IN {
type master;
file "wangge.com.zone";
};
````
(5). 创建数据库文件
````
vim /var/named/wangge.com.zone
$TTL 1D
@ IN SOA master admin.wangge.com. (
20190427 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.238.128
webserver2 A 5.5.5.5
www CNAME webserver2
````
(6).使配置生效
````
[root@centos7dns ~]# rndc reload
server reload successful(成功)
[root@centos7dns ~]#
````
(7).验证DNS转发服务器是否安装配置完成
````
首先自己本机测试,www.wangge.com是否解析是5.5.5.5
[root@centos7 named]# dig www.wangge.com @127.0.0.1
````
(8).在“主DNS服务器”添加“DNS转发服务器”的记录(全局转发和特定转发)
* 建议关闭配置文件“/etc/named.conf”里的dnssec功能
* dnssec-enable no;
* dnssec-validation no;
````
编辑配置文件“/etc/named.conf”的“Options模块”,配置全局转发:
forward first(或only); --->转发策略
forwarders {192.168.238.128;(转发服务器的IP地址)} --->转发给谁
说明:这两行表示,先转发给转发服务器查询,如果没有,我自己在互联网查询
说明:特定转发
特定区域转发:仅转发对特定的区域的请求,比全局转发优先级高
编辑配置文件“/etc/named.rfc1912.zones”
zone "域名(如wangge.com)" IN {
type forward;
forward first|only;
forwarders { ip;};
````
(9).验证DNS转发服务器是否成功
````
已有设备:
主DNS服务器“192.168.238.134”
DNS转发服务器“192.168.238.128”
DNS客户端“192.168.238.133”
因为使用的是“first”策略,所以DNS客户端向主DNS服务器查询“www.wangge.com”域名解析,主DNS服务器没有,会转发给“DNS转发服务器”查询,就会查询到想要的结果(5.5.5.5)。如果查询解析“www.zhangge.com”,因为“主DNS服务器和DNS转发服务器”都没有记录,所以“DNS客户端”会自己从互联网查询解析,如果查询到解析结果,就证明“DNS服务器”创建、配置成功。(前提:互联网上真有www.zhangge.com这个域名)
1>在DNS客户端,使用“dig www.wangge.com @192.168.238.134(主DNS服务器IP地址)”查询“www.wangge.com”域名的解析(www.wangge.com对应的IP是否是5.5.5.5,有则成功)
2>在DNS客户端,使用“dig www.zhangge.com @192.168.238.134”查询“www.zhangge.com”域名的解析(www.zhangge.com对应的IP地址是否存在,有则成功)
````
### 6. 智能DNS服务器
示例:企业网站内部实现智能CDN功能(即下面的实验6)
* 针对三个城市:北京、上海、其他城市实现智能CDN
#### (1)在主DNS服务器/var/named/目录里,创建三个区域数据库:magedu.com.bj(北京)、magedu.com.sh(上海)、magedu.com.zone(其他城市)
````
[root@centos7dns named]# ll
-rw-r----- 1 root named 373 May 8 19:07 magedu.com.bj
-rw-r----- 1 root named 373 May 8 19:07 magedu.com.sh
-rw-r----- 1 root named 373 May 8 19:07 magedu.com.zone
[root@centos7dns named]#
````
#### (2).编辑区域数据库文件
目的:北京用户用北京的服务器返回结果;上海和其他地区同理
````
1.编辑北京的区域数据库文件
[root@centos7dns named]# cat magedu.com.bj
$TTL 1D
@ IN SOA master admin.magedu.com. (
20190427 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.238.134
webserver2 A 6.6.6.6(北京CDN机房WEB服务器的IP地址)
www CNAME webserver2
[root@centos7dns named]#
2.编辑上海的区域数据库文件
[root@centos7dns named]# cat magedu.com.sh
$TTL 1D
@ IN SOA master admin.magedu.com. (
20190427 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.238.134
webserver2 A 8.8.8.8(上海CDN机房WEB服务器的IP地址)
www CNAME webserver2
[root@centos7dns named]#
3.编辑其他地区的区域数据库文件
[root@centos7dns named]# cat magedu.com.zone
$TTL 1D
@ IN SOA master admin.magedu.com. (
20190427 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.238.134
webserver2 A 9.9.9.9(其他地区CDN机房WEB服务器的IP地址)
www CNAME webserver2
[root@centos7dns named]#
````
#### 3.定义ACL
目录:哪些客户端属于北京、上海、其他地区
````
打开/etc/named.conf文件,定义三个ACL
acl beijingnet(北京) {
192.168.238.0/24;
};
acl shanghainet(上海) {
172.22.0.0/16;
};
acl othernet(其他地区) {
any;
};
注意:把较小范围的往前写,会优先实现前面的acl。所以,上面其他地区的acl不能千万不能放在前面。
````
#### 4.将定义的ACL与数据库关联(视图技术:将客户端的IP地址和数据库的关联关系。语法有view等)
编辑/etc/named.conf文件,在最下面的“include行前面”添加:
>注意:有了view,所有的区域配置都必须在view里,不然不会生效,还报错。格式是“客户端的IP地址和数据库的关联关系--->创建view”
(1)添加内容1:
````
新增加行:指定客户端 ACL(北京的ACL)---》来自北京的客户端属于北京view
match-clients { beijingnet;};
````
(2)添加内容2:
方法一:
````
新增加行:
北京view对应的数据库,是专门的区域数据库,即第一步创建的区域数据库文件
zone "magedu.com" {
type master;
file "magedu.com.bj";
};
````
方法二:
````
* 新增加行:
“include "/etc/named.rfc1912.zones.bj" ;”
* 删除或注释最下面的行:
“include "/etc/named.rfc1912.zones" ;”
* 将“根”的区域信息,放到“/etc/named.rfc1912.zones.bj”文件(因为有了view后,所有的区域信息要放到view里面)
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bj
vim /etc/named.rfc1912.zones.bj
zone "." IN {
type hint;
file "named.ca";
};
注意:“/etc/named.rfc1912.zones.bj”文件是
根据“/etc/named.rfc1912.zones”文件为模板复制的,
在把上面“根区域信息”添加进去。
之后,在“/etc/named.rfc1912.zones.bj”文件里,
指定区域对应的数据库文件,就是最开始创建的文件。
````
**总结**:
>使用方法二的办法,创建ACL与数据库关联的命令如下:
````
1. 编辑文件“/etc/named.conf”
vim /etc/named.conf
创建以下行:
view beijingview{
match-clients { beijingnet;};
include "/etc/named.rfc1912.zones.bj";
};
view shanghaiview{
match-clients { shanghainet;};
include "/etc/named.rfc1912.zones.sh";
};
view otherview{
match-clients {othernet;};
include "/etc/named.rfc1912.zones";
};
删除下面一行:
include "/etc/named.rfc1912.zones
2.复制“根的区域信息“到“/etc/named.rfc1912.zones”文件,并以此为模板创建其它地址的区域文件,在文件里指定各个区域的数据库文件,之后把“/etc/named.conf”文件的“根区域信息”删除
复制:
[root@centos7dns ~]# vim /etc/named.rfc1912.zones(其他区域)
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.com" IN {
type master;
file "magedu.com.zone";
};
创建:
[root@centos7dns ~]# cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bj
[root@centos7dns ~]# cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.sh
指定各个区域的数据库文件:
北京区域:
vim /etc/named.rfc1912.zones.bj
zone "magedu.com" IN {
type master;
file "magedu.com.bj";
上海区域:
vim /etc/named.rfc1912.zones.sh
zone "magedu.com" IN {
type master;
file "magedu.com.sh";
使配置文件生效:
[root@centos7dns ~]# rndc reload
server reload successful
[root@centos7dns ~]#
3.在“/etc/named.conf”文件,搜索allow-query,内容改为“any(所有人)”如下:
allow-query { any; };
4.检查配置是否有错误
[root@centos7dns ~]# named-checkconf
````
#### 5.重新加载配置文件
````
[root@centos7dns ~]# rndc reload
server reload successful
[root@centos7dns ~]#
````
#### 6. 验证
在DNS客户端(两个IP地址:192.168.238.133和172.22.0.160)使用dig命令验证:因为客户端的192.168.238.0网段,属于北京区域,如果用DNS主服务器(两个IP地址192.168.238.134和172.22.145.195)解析www.magedu.com域,得到6.6.6.6,就证明:DNS服务器根据DNS客户端的IP,自动分配较近区域的DNS服务器提供解析。同理,用DNS主服务器(172.22.145.195)解析www.magedu.com域,得到8.8.8.8,也能证明。
````
[root@centos6dns ~]# dig www.magedu.com @192.168.238.134
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.magedu.com @192.168.238.134
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50144
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.magedu.com. IN A
;; ANSWER SECTION:
www.magedu.com. 86400 IN CNAME webserver2.magedu.com.
webserver2.magedu.com. 86400 IN A 6.6.6.6
;; AUTHORITY SECTION:
magedu.com. 86400 IN NS master.magedu.com.
;; ADDITIONAL SECTION:
master.magedu.com. 86400 IN A 192.168.238.134
;; Query time: 1 msec
;; SERVER: 192.168.238.134#53(192.168.238.134)
;; WHEN: Thu May 16 11:34:29 2019
;; MSG SIZE rcvd: 110
[root@centos6dns ~]#
[root@centos6dns ~]# dig www.magedu.com @172.22.145.195
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.magedu.com @172.22.145.195
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36959
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.magedu.com. IN A
;; ANSWER SECTION:
www.magedu.com. 86400 IN CNAME webserver2.magedu.com.
webserver2.magedu.com. 86400 IN A 8.8.8.8
;; AUTHORITY SECTION:
magedu.com. 86400 IN NS master.magedu.com.
;; ADDITIONAL SECTION:
master.magedu.com. 86400 IN A 192.168.238.134
;; Query time: 4 msec
;; SERVER: 172.22.145.195#53(172.22.145.195)
;; WHEN: Thu May 16 11:43:12 2019
;; MSG SIZE rcvd: 110
[root@centos6dns ~]#
````
## 十一.总结性试验
* 实现:互联网 DNS架构
![](https://s1.51cto.com/images/blog/201905/17/d6045fa768fa7b0b2c7c80438a61f3a2.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
**说明**:
用户使用浏览器访问www.magedu.com网站
首先查询本地DNS服务器是否知道这个网站,本地DNS说没有;
接着用户向"根服务器"递归查询这个网站,“根服务器”说没有;
接着用户向"com服务器"查询这个网站,“com服务器”说没有;
接着用户向"主、从DNS服务器"查询这个网站,“主、从DNS服务器”说有,因为它们是这个网站的权威服务器,解析完成后返回客户端这个网站主机的IP地址,用户得到后就可以访问了。
**设备**:
|编号 |设备 |作用 |IP地址 |
|:-----:|:-------------:|:----------------------:|:--------------------:|
|001 |centos6 |用户客户端 |192.168.238.6 |
|002 |centos7 |用户本地DNS服务器(LDNS) |192.168.238.7 |
|003 |centos7 |网络DNS服务器(根) |192.168.238.17 |
|004 |centos7 |网络DNS服务器(com) |192.168.238.27 |
|005 |centos7 |网站主DNS服务器(master) |192.168.238.37 |
|006 |centos7 |网站从DNS服务器(slave) |192.168.238.47 |
|007 |centos6 |网站WEB服务器(网站) |192.168.238.67 |
**过程**:
* 注意每个主机的主机名对应的命令
* 建议按照下面顺序完成实验
* 建议每搭建好一个主机,都用客户端验证,方便知道是否搭建成功,以及后面出错好排查
1. 设置“用户客户端”电脑的DNS是“192.168.238.7”。并使用“用户客户端”的电脑(192.168.238.6),ping其他所有主机。确保能ping通所有主机,在进行下一步。
2.搭建配置WEB网站“www.magedu.com”的页面(192.168.238.67)
````
1. 安装WEB的包httpd
centos6默认安装了httpd的包,使用“rpm -q httpd”命令查看,所以不用再安装httpd的包
2.启动httpd服务
[root@centos6web ~]# service httpd start
3.创建WEB的网站页面
[root@centos6web ~]# echo "welcome to magedu.com" > /var/www/html/index.html
[root@centos6web ~]# cat /var/www/html/index.html
welcome to magedu.com
[root@centos6web ~]#
4.使用用户客户端访问WEB的网站
[root@centos6client ~]# curl 192.168.238.67
welcome to magedu.com
[root@centos6client ~]#
发现可以访问,之后我们就搭建DNS服务器,成功后,我们使用域名访问,如果获取到网页内容,即表示DNS服务器解析域名为IP地址成功,即实验成功。
````
3.搭建配置主DNS服务器(192.168.238.37)
````
1.确保能联通外网,yum源正常
配置yum源可参考https://www.cnblogs.com/renpingsheng/p/7845096.html
2.安装DNS的软件包bind
[root@centos7master ~]# yum -y install bind
3.编辑主配置文件
[root@centos7master ~]# vim /etc/named.conf
“//”表示注释,注释下面两行。保存退出
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
4.编辑区域文件
[root@centos7master ~]# vim /etc/named.rfc1912.zones
添加下面的区域配置
zone "magedu.com" IN {
type master;
file "magedu.com.zone";
};
5.在“/var/named”目录创建“magedu.com区域”的数据库文件“magedu.com.zone”
[root@centos7master ~]# cd /var/named
[root@centos7master named]# ls
data named.ca named.localhost slaves
dynamic named.empty named.loopback
[root@centos7master named]# vim magedu.com.zone(adm.magedu.com.是邮箱)
$TTL 1D
@ IN SOA ns1 adm.magedu.com. ( 1 1H 10M 1D 3H )
NS ns1
NS ns2
ns1 A 192.168.238.37(主DNS服务器)
ns2 A 192.168.238.47(从DNS服务器)
www A 192.168.238.67(WEB服务器)
6.设置区域数据库文件属性,提高安全性
[root@centos7master named]# ll
total 20
drwxrwx--- 2 named named 6 Jan 30 01:23 data
drwxrwx--- 2 named named 6 Jan 30 01:23 dynamic
-rw-r--r-- 1 root root 136 May 18 02:25 magedu.com.zone
-rw-r----- 1 root named 2281 May 22 2017 named.ca
-rw-r----- 1 root named 152 Dec 15 2009 named.empty
-rw-r----- 1 root named 152 Jun 21 2007 named.localhost
-rw-r----- 1 root named 168 Dec 15 2009 named.loopback
drwxrwx--- 2 named named 6 Jan 30 01:23 slaves
[root@centos7master named]# chgrp named magedu.com.zone
[root@centos7master named]# chmod 640 magedu.com.zone
[root@centos7master named]# ll
total 20
drwxrwx--- 2 named named 6 Jan 30 01:23 data
drwxrwx--- 2 named named 6 Jan 30 01:23 dynamic
-rw-r----- 1 root named 136 May 18 02:25 magedu.com.zone
-rw-r----- 1 root named 2281 May 22 2017 named.ca
-rw-r----- 1 root named 152 Dec 15 2009 named.empty
-rw-r----- 1 root named 152 Jun 21 2007 named.localhost
-rw-r----- 1 root named 168 Dec 15 2009 named.loopback
drwxrwx--- 2 named named 6 Jan 30 01:23 slaves
[root@centos7master named]#
7.启动named服务
[root@centos7master named]# systemctl start named
8.在DNS客户端(192.168.238.6)验证主DNS服务器是否搭建配置成功
[root@centos6client ~]# dig www.magedu.com @192.168.238.37
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.magedu.com @192.168.238.37
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59033
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.magedu.com. IN A
;; ANSWER SECTION:
www.magedu.com. 86400 IN A 192.168.238.67(成功)
;; AUTHORITY SECTION:
magedu.com. 86400 IN NS ns1.magedu.com.
magedu.com. 86400 IN NS ns2.magedu.com.
;; ADDITIONAL SECTION:
ns1.magedu.com. 86400 IN A 192.168.238.37
ns2.magedu.com. 86400 IN A 192.168.238.47
;; Query time: 44 msec
;; SERVER: 192.168.238.37#53(192.168.238.37)
;; WHEN: Fri May 17 04:16:31 2019
;; MSG SIZE rcvd: 116
[root@centos6client ~]#
````
4.搭建配置从DNS服务器(192.168.238.47)
````
1.确保能联通外网,yum源正常
配置yum源可参考https://www.cnblogs.com/renpingsheng/p/7845096.html
2.安装DNS的软件包bind
[root@centos7master ~]# yum -y install bind
3.编辑主配置文件
[root@centos7master ~]# vim /etc/named.conf
“//”表示注释,注释下面两行。保存退出
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
4.编辑区域文件
[root@centos7master ~]# vim /etc/named.rfc1912.zones
添加下面的区域配置
zone "magedu.com" IN {
type slave;
masters {192.168.238.37;};
file "slaves/magedu.com.zone";
};
5.安全加固
(1)在主DNS服务器(192.168.238.37)上,进行安全设置,只允许哪些主机“同步主DNS服务器的数据”
在“/etc/named.conf”文件的“Options”模块,"allow-query"行的上面添加下面的一行,如下:
allow-transfer {192.168.238.47;};(从DNS服务器的IP地址,表示只允许从这台从DNS服务器同步主DNS服务器的数据)
之后重启named服务,重新加载DNS配置
[root@centos7master named]# systemctl restart named
[root@centos7master named]# rndc reload
server reload successful
[root@centos7master named]#
(2)在从DNS服务器(192.168.238.47)进行安全设置,不允许其它主机同步DNS数据
在“/etc/named.conf”文件的“Options”模块,"allow-query"行的上面添加下面的一行,如下:
allow-transfer {none;};
重启named服务:[root@centos7master named]# systemctl restart named
6. 查看是否同步成功主DNS服务器的“DNS数据”
[root@centos7slave ~]# ll /var/named/slaves/
total 4
-rw-r--r-- 1 named named 304 May 18 03:08 magedu.com.zone
[root@centos7slave ~]#
7.在DNS客户端(192.168.238.6)验证从DNS服务器是否搭建配置成功
[root@centos6client ~]# dig www.magedu.com @192.168.238.47
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.magedu.com @192.168.238.47
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42952
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.magedu.com. IN A
;; ANSWER SECTION:
www.magedu.com. 86400 IN A 192.168.238.67(成功)
;; AUTHORITY SECTION:
magedu.com. 86400 IN NS ns1.magedu.com.
magedu.com. 86400 IN NS ns2.magedu.com.
;; ADDITIONAL SECTION:
ns1.magedu.com. 86400 IN A 192.168.238.37
ns2.magedu.com. 86400 IN A 192.168.238.47
;; Query time: 2 msec
;; SERVER: 192.168.238.47#53(192.168.238.47)
;; WHEN: Fri May 17 04:50:40 2019
;; MSG SIZE rcvd: 116
[root@centos6client ~]#
````
5.搭建配置网络DNS服务器(com)(192.168.238.27)
````
1.确保能联通外网,yum源正常
配置yum源可参考https://www.cnblogs.com/renpingsheng/p/7845096.html
2.安装DNS的软件包bind
[root@centos7master ~]# yum -y install bind
3.编辑主配置文件
[root@centos7master ~]# vim /etc/named.conf
“//”表示注释,注释下面两行。保存退出
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
4.编辑区域文件(创建委派)
[root@centos7master ~]# vim /etc/named.rfc1912.zones
添加下面的区域配置
zone "com" IN {
type master;
file "com.zone";
};
5.创建“com区域”的数据库文件
[root@centos7com ~]# vim /var/named/com.zone(admin.magedu.com是邮箱)
$TTL 1D
@ IN SOA ns1 admin.magedu.com. ( 1 1D 1H 1W 3D )
NS ns1
magedu NS mageduns1(主DNS服务器的NS记录)
magedu NS mageduns2(从DNS服务器的NS记录)
ns1 A 192.168.238.27
mageduns1 A 192.168.238.37
mageduns2 A 192.168.238.47
6.重启named服务
[root@centos7com ~]# systemctl restart named
7.在DNS客户端(192.168.238.6)验证网络DNS服务器(com)是否搭建配置成功
[root@centos6client ~]# dig www.magedu.com @192.168.238.27
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.magedu.com @192.168.238.27
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33275
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.magedu.com. IN A
;; ANSWER SECTION:
www.magedu.com. 86400 IN A 192.168.238.67(委派成功)
;; AUTHORITY SECTION:
magedu.com. 86400 IN NS mageduns1.com.
magedu.com. 86400 IN NS mageduns2.com.
;; ADDITIONAL SECTION:
mageduns1.com. 86400 IN A 192.168.238.37
mageduns2.com. 86400 IN A 192.168.238.47
;; Query time: 10 msec
;; SERVER: 192.168.238.27#53(192.168.238.27)
;; WHEN: Fri May 17 05:16:35 2019
;; MSG SIZE rcvd: 128
[root@centos6client ~]#
````
6.搭建配置网络DNS服务器(根)(192.168.238.17)
````
1.确保能联通外网,yum源正常
配置yum源可参考https://www.cnblogs.com/renpingsheng/p/7845096.html
2.安装DNS的软件包bind
[root@centos7master ~]# yum -y install bind
3.编辑主配置文件
[root@centos7master ~]# vim /etc/named.conf
“//”表示注释,注释下面两行。保存退出
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
之后,找到“.”的区域信息,默认配置为网络上“根”的区域配置,我们做实验,要把这台机器当做“网络上的根”,所以修改“.”区域信息如下:
zone "." IN {
type master;
file "root.zone";
};
4.编辑区域文件
因为“.”的区域信息直接在"/etc/named.conf"文件里改了,就不用再“/etc/named.rfc1912.zones”文件里修改了。
5.创建“.”区域的数据库文件
[root@centos7com ~]# vim /var/named/root.zone(admin.magedu.com是邮箱)
$TTL 1D
@ IN SOA ns1 admin.magedu.com. ( 1 1D 1H 1W 3D )
NS ns1
com NS comns(根的子域com的NS记录)
ns1 A 192.168.238.17
comns A 192.168.238.27
6.设置“.”区域数据库文件(root.zone)属性,提高安全性
[root@centos7gen ~]# ll /var/named/
total 20
drwxrwx--- 2 named named 6 Jan 30 01:23 data
drwxrwx--- 2 named named 6 Jan 30 01:23 dynamic
-rw-r----- 1 root named 2281 May 22 2017 named.ca
-rw-r----- 1 root named 152 Dec 15 2009 named.empty
-rw-r----- 1 root named 152 Jun 21 2007 named.localhost
-rw-r----- 1 root named 168 Dec 15 2009 named.loopback
-rw-r--r-- 1 root root 123 May 18 03:59 root.zone
drwxrwx--- 2 named named 6 Jan 30 01:23 slaves
[root@centos7gen ~]# chgrp named /var/named/root.zone
[root@centos7gen ~]# chmod 640 /var/named/root.zone
[root@centos7gen ~]# ll /var/named/
total 20
drwxrwx--- 2 named named 6 Jan 30 01:23 data
drwxrwx--- 2 named named 6 Jan 30 01:23 dynamic
-rw-r----- 1 root named 2281 May 22 2017 named.ca
-rw-r----- 1 root named 152 Dec 15 2009 named.empty
-rw-r----- 1 root named 152 Jun 21 2007 named.localhost
-rw-r----- 1 root named 168 Dec 15 2009 named.loopback
-rw-r----- 1 root named 123 May 18 03:59 root.zone
drwxrwx--- 2 named named 6 Jan 30 01:23 slaves
[root@centos7gen ~]#
7.重启named服务
[root@centos7com ~]# systemctl restart named
8.在DNS客户端(192.168.238.6)验证网络DNS服务器(根)是否搭建配置成功
[root@centos6client ~]# dig www.magedu.com @192.168.238.17
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.magedu.com @192.168.238.17
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46594
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.magedu.com. IN A
;; ANSWER SECTION:
www.magedu.com. 86400 IN A 192.168.238.67
;; AUTHORITY SECTION:
magedu.com. 86400 IN NS mageduns2.com.
magedu.com. 86400 IN NS mageduns1.com.
;; ADDITIONAL SECTION:
mageduns1.com. 86400 IN A 192.168.238.37
mageduns2.com. 86400 IN A 192.168.238.47
;; Query time: 9 msec
;; SERVER: 192.168.238.17#53(192.168.238.17)
;; WHEN: Fri May 17 05:47:48 2019
;; MSG SIZE rcvd: 128
[root@centos6client ~]#
````
7.搭建配置网络DNS服务器(根)(192.168.238.7)
````
1.确保能联通外网,yum源正常
配置yum源可参考https://www.cnblogs.com/renpingsheng/p/7845096.html
2.安装DNS的软件包bind
[root@centos7master ~]# yum -y install bind
3.编辑主配置文件
[root@centos7master ~]# vim /etc/named.conf
“//”表示注释,注释下面两行。保存退出
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
把下面两行的“yes”改为“no”(转发设置)
dnssec-enable no;
dnssec-validation no;
4.根据实验的要求,我们要把“192.168.238.17”这台主机当做网络上的“根”。所以要修改默认配置,把“根服务器”指定为“192.168.238.17”这台机器,如下:
[root@centos7ldns ~]# vim /var/named/named.ca
(清空里面的配置,只留下下面的两行,并修改第二行的IP地址为我们创建的“根”服务器的IP)
. 518400 IN NS a.root-servers.net.
a.root-servers.net. 3600000 IN A 192.168.238.17
5.重启named服务
[root@centos7ldns ~]# systemctl restart named
````
8.验证结果
````
1.为了避免干扰,把除了“用户客户端”和“WEB服务器”,其他所有服务器(5台)的DNS缓存清除
清除命令:[root@centos7ldns ~]# rndc flush
2.查看用户客户端的DNS
[root@centos6client ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.238.7
[root@centos6client ~]#
3.使用“用户客户端”访问www.magedu.com,解析到IP地址,最终获取到网页
[root@centos6client ~]# dig www.magedu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.magedu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51250
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.magedu.com. IN A
;; ANSWER SECTION:
www.magedu.com. 86400 IN A 192.168.238.67(成功)
;; AUTHORITY SECTION:
magedu.com. 86400 IN NS ns1.magedu.com.
magedu.com. 86400 IN NS ns2.magedu.com.
;; ADDITIONAL SECTION:
ns1.magedu.com. 86400 IN A 192.168.238.37
ns2.magedu.com. 86400 IN A 192.168.238.47
;; Query time: 16 msec
;; SERVER: 192.168.238.7#53(192.168.238.7)
;; WHEN: Fri May 17 06:17:53 2019
;; MSG SIZE rcvd: 116
[root@centos6client ~]# curl www.magedu.com
welcome to magedu.com(成功)
[root@centos6client ~]#
4.为了验证DNS的主、从功能,我们把主DNS服务器关掉,用从DNS服务器来给用户提供域名解析,实现访问www.magedu.com网站的效果。
(注意:先把所有电脑(5台)的DNS缓存清除,使用“rndc flush”命令)
第一步:清除所有服务器的DNS缓存
第二步:关闭主DNS服务器(关机或关闭网络)
第三步:使用“用户客户端”访问www.magedu.com网站
[root@centos6client ~]# curl www.magedu.com
welcome to magedu.com
[root@centos6client ~]#
````
## 十二. 编译安装bind
1. 下载bind:
````
isc.org:
bind-9.10
bind-9.11
bind-10
````
2.编译安装bind
````
• tar xvf bind-9.11.0a3.tar.gz
• cd bind-9.11.0a3/
• groupadd -r -g 53 named
• useradd -r -u 53 -g 53 named
• ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --withoutopenssl --disable-ipv6 --disable-chroot --enable-threads
• make
• make install
````
3.vim /etc/named/named.conf
````
options {
directory “/var/named/”;
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file “named.localhost";
allow-update {none;};
};
zone “1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update {none;};
};
````
4.区域数据库
````
• mkdir /var/named
• named-checkconf
• dig +norec @a.root-servers.net > /var/named/named.ca
• vim /var/named/named.localhost
$TTL 1d
@ IN SOA localhost. admin.localhost. (
2016061801
1h
5m
7d
1d)
IN NS localhost.
localhost. IN A 127.0.0.1
````
5.vim /var/named/named.loopback
````
$TTL 1d
@ IN SOA localhost. admin.localhost. (
2016061801
1h
5m
7d
1d)
NS @
A 127.0.0.1
PTR localhost.
````
6.设置权限
````
• chmod 640 /var/named/*
• chmod 640 /etc/named/named.conf
• chgrp -R named /var/named/
• chgrp named /etc/named/named.conf
````
7.启动服务和测试
````
• man named
• named -u named -f -g -d 3 前端级别3方式运行
• named -u named 后台运行
• killall named
• ss -tuln
• tail /var/log/message
• named -u named
````
8.支持rndc
````
• rndc reload 观察错误提示
• rndc-confgen -r /dev/urandom > /etc/named/rndc.conf 生成key
• tail /etc/named/rndc.conf >> /etc/named/named.conf
• killall -SIGHUP named
• rndc status
````