DNS的主从配置

DNS从服务器也叫辅服DNS服务器,如果网络上某个节点只有一台DNS服务器的话,首先服务器的抗压能力是有限的,当压力达到一定的程度,服务器就可能会宕机罢工,
其次如果这台服务器出现了硬件故障那么服务器管理的区域的域名将无法访问。为了解决这些问题,最好的办法就是使用多个DNS服务器同时工作,
并实现数据的同步,这样两台服务器就都可以实现域名解析操作。

从服务器要点

1、应该为一台独立的名称服务器
2、主DNS服务器的区域解析库文件中必须有一条NS记录指向从服务器
3、从DNS服务器只需要定义区域,而无须提供解析库文件;解析库文件自动生成文件放置于/var/named/slaves/目录中,并且有写权限。
4、主DNS和辅助DNS服务器设置区域复制权限。防止使用 dig -t axfr hunk.tech 抓取信息。
5、主DNS和辅助DNS服务器时间应该同步,可通过ntp进行;
6、bind程序的版本应该保持一致;否则,应该辅助DNS版本高,主DNS版本低
定义从区域的方法:
zone "ZONE_NAME" IN {
type slave;
masters { 主DNS服务器IP; };
file "slaves/ZONE_NAME.zone";
};

主DNS服务器架设好后,辅助的DNS服务器的架设就相对简单多了。

很重要的一点:主从服务器时间不同步的话,则会导致各种意想不到的问题发生。因此,先配置NTP时间同步吧。

NTP服务器网址http://www.pool.ntp.org/zone/cn
ntp.sjtu.edu.cn 202.120.2.101 (上海交通大学网络中心NTP服务器地址)
server 0.cn.pool.ntp.org
server 1.cn.pool.ntp.org
server 2.cn.pool.ntp.org
server 3.cn.pool.ntp.org自行选择快而稳定的。

创建从DNS步骤

1.记录下主DNS服务器的/etc/named.rfc1912.zones中需要进行主从设置的区域信息

2.在辅助的DNS服务器的/etc/named.rfc1912.zones文件,添加需要进行同步的区域记录,这两个记录是主DNS服务器配置文件里已经存在的记录。

zone "hunk.tech" IN {type slave;                     #type类型修改为slavemasters { 192.168.4.200; }        #定义主DNS服务器IPfile "slaves/named.hunk.tech";  #定义辅助DNS数据库文件
};zone "4.168.192.in-addr.arpa" IN {type slave;                     #type类型修改为slavemasters { 192.168.4.200; };        #定义主DNS服务器IPfile "slaves/named.192.168.4";  #定义辅助DNS数据库文件
};

3. 主DNS服务器设置允许辅助DNS服务器作区域传送

在主DNS的/etc/named.conf全局属性中options {}
添加 allow-transfer { 允许的辅助DNS服务器IP; };防止未授权的区域复制。
如:allow-transfer { 192.168.4.201; } ;     
options {allow-transfer { 192.168.4.201; } ;}

4. 辅助DNS服务器设置禁止从本服务器作区域传送

辅助DNS服务器/etc/named.conf全局属性中options {}
添加 allow-transfer { none; };视情况不再允许未授权区域复制。
allow-transfer  { none; };

5.使用命令检查主配置文件和区域数据库

6.重新加载主配置文件和区域数据库文件

rndc: neither /etc/rndc.conf nor /etc/rndc.key was found
如果报以上错误,请重新启动服务#service named restart

7.测试

会自动生成区域文件
#ll ../slaves/
-rw-r--r--. 1 named named 481 Jan 19 02:25 named.192.168.4
-rw-r--r--. 1 named named 536 Jan 19 02:25 named.hunk.tech生成的文件的格式比较规范

$ORIGIN .
$TTL 600        ; 10 minutes
hunk.tech               IN SOA  6-DNS-1.hunk.tech. admin.hunk.tech. (0          ; serial7200       ; refresh (2 hours)600        ; retry (10 minutes)86400      ; expire (1 day)10800      ; minimum (3 hours))NS      6-DNS-1.hunk.tech.NS      6-DNS-2.hunk.tech.MX      10 mail.hunk.tech.
$ORIGIN hunk.tech.
*                       A       192.168.0.206
6-DNS-1                 A       192.168.4.200
6-DNS-2                 A       192.168.4.201
6-WEB-1                 A       192.168.4.205A       192.168.4.206
7-WEB-2                 A       192.168.4.206
mail                    A       192.168.4.205
www                     CNAME   6-WEB-1

其他情况

A.把辅助DNS的区域文件删除了1.重启辅助DNS的named服务后可以恢复2.主DNS服务器版本更新并重新加载时,辅助DNS会同步生成文件3.rndc retransfer 区域名称如:rndc retransfer 4.168.192.in-addr.arparndc retransfer hunk.tech
B.版本更新后,只要reload,会立即发生同步    C.辅助DNS辅助器生成的区域文件,Centos 6 可以使用cat等文本工具查看,Centos 7 已经使用data格式存放,需要使用这个命令配合参数查看 #named-compilezone -f raw -o - zone name  zone文件D.端口使用。
查询单条记录时,使用UDP 53
区域传输的时候 需要使用TCP 53 和 UDP 53

基于TSIG加密的主从设置

Transaction signatures(TSIG)通常是一种确保DNS消息安全,并提供安全的服务器与服务器之间通讯(通常用在主从服务器之间)的机制。

TSIG可以保护以下类型的DNS服务器:Zone区域传送、Notify、动态更新、递归查询邮件。

TSIG适用于BIND v8.2及以上版本。TSIG使用共享秘密和单向散列函数来验证的DNS信息。

TSIG 可确认 DNS 之信息是由某特定 DNS Server 所提供。通常TSIG 应用于域名服务器间的区带传输,确保数据不会被篡改或产生 dns spoofing

1. 按照上文配置好主从并测试没问题后才执行以下步骤操作

dnssec-keygen
DNSSEC 密钥生成工具-a 选择加密算法对于DNSSEC 值必须是 RSAMD5, RSASHA1(强制实现), DSA(推荐), NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512, ECCGOST对于TSIG/TKEY, 值必须是DH (Diffie Hellman), HMAC-MD5(强制实现),HMAC-SHA1, HMAC-SHA224, HMAC-SHA256, HMAC-SHA384, HMAC-SHA512-b 指定密钥中的位数。密钥大小的选择取决于使用的算法。RSAMD5 和 RSASHA1 密钥必须在 512 和 2048 位之间。Diffie-Hellman 密钥必须在 128 和 4096 位之间。DSA 密钥必须在 512 和 1024 位之间,并且必须是 64 的整数倍。HMAC-MD5 密钥必须在 1 位和 512 位之间。-f  在 KEY/DNSKEY 记录的标志字段中设置指定的标志。唯一识别的标志是 KSK(Key Signing Key,密钥签名密钥)DNSKEY。-h 列出 dnssec-keygen 的选项和参数的简短摘要-n 指定密钥的所有者类型。nametype 的值必须是 ZONE(对于 DNSSEC 区域密钥 (KEY/DNSKEY))、HOST 或 ENTITY(对于与主机相关的密钥 (KEY))、USER(对于与用户相关的密钥 (KEY))或 OTHER (DNSKEY)。这些值不区分大小写。缺省值是 ZONE(用于生成 DNSKEY)-r 指定随机源,有助与生成速度。如果操作系统不提供 /dev/random 或等效设备,则缺省的随机源是键盘输入.-K(大写) <directory>: 设置要写入的密钥文件的目录

2. 在主DNS服务器中生成密钥

#dnssec-keygen -a HMAC-SHA512 -b 512 -n HOST -K /root/dnskey/ -r /dev/urandom hunk-tech-key选项解读:
-a HMAC-SHA512  :采用HMAC-SHA512加密算法
-b 512          :生成的密钥长度为512位
-n HOST         :指定密钥的所有者类型为主机类型
-K /root/dnskey/:指定生成密钥的目录
-r /dev/urandom :指定生成密钥使用的随机数来源,否则将会让你在键盘上敲入随机字符,导致会非常慢。
hunk-tech-key   :密钥的名称之后,会在指定的目录/root/dnskey/生成2个文件
Khunk-tech-key.+165+40008.key     > 公钥
Khunk-tech-key.+165+40008.private > 私钥内容类似如下:
#cat Khunk-tech-key.+165+40008.key hunk-tech-key. IN KEY 512 3 165 MmQEQV+fSKe/uEKfxcpMa4avCFPTY3ipmcg+JqaPU2dV9yYx9rOdXesP aVnUyv6XarzJ3ml1H2gCgR0cDf3TGg==#cat Khunk-tech-key.+165+40008.private Private-key-format: v1.3
Algorithm: 165 (HMAC_SHA512)
Key: MmQEQV+fSKe/uEKfxcpMa4avCFPTY3ipmcg+JqaPU2dV9yYx9rOdXesPaVnUyv6XarzJ3ml1H2gCgR0cDf3TGg== (这一行内容等会用到)
Bits: AAA=
Created: 20180206083046
Publish: 20180206083046
Activate: 20180206083046

3. 在主DNS服务器上创建密钥验证文件

#vim /etc/named/dns-keykey "hunk-tech-key" {   > 这个双引号内填写的字符串可以是任意的。这个字符串主从必须要一致。这个例子使用dnssec-keygen生成时指定的密钥的名称algorithm HMAC-SHA512;   > 这个加密算法填写的是dnssec-keygen生成时指定的加密算法secret "MmQEQV+fSKe/uEKfxcpMa4avCFPTY3ipmcg+JqaPU2dV9yYx9rOdXesPaVnUyv6XarzJ3ml1H2gCgR0cDf3TGg==";  > 这里填写的生成密钥中K*.private文件中的key值。注意双引号和分号
};

4. 修改密钥验证文件所有者与权限

#chown root:named /etc/named/dns-key
#chmod 640 /etc/named/dns-key

5. 修改主DNS服务器的主配置文件

# vim /etc/named.confinclude "/etc/named/dns-key"; 将此行内容添加至文件尾部在全局options配置中修改以下内容,没有的话就添加dnssec-enable yes;dnssec-validation yes;allow-update { localhost;192.168.7.253; };                    > 定义仅有本机和从DNS才可以动态更新allow-transfer { localhost;192.168.7.253; };    > 定义只允许本机和从DNS主机才能使用区域传送notify yes;以下行不在全局定义的范围内,不要误写入options的{ }中
server 192.168.7.253 { keys hunk-tech-key; };       > 定义与从dns服务器使用密钥通讯

6. 导入密钥验证文件到从DNS服务器

为了确保传输的文件没有被破坏,请使用md5sum之类的哈希算法进行校验
#md5sum /etc/named/dns-key > /etc/named/md5sum
#scp /etc/named/* 192.168.7.253:/etc/named/
dns-key                               100%
md5sum                                100%在从DNS服务上验证文件的完整性
#md5sum -c md5sum
/etc/named/dns-key: OK

7. 修改密钥验证文件所有者与权限

#chown root:named /etc/named/dns-key
#chmod 640 /etc/named/dns-key

8. 修改从DNS服务器的主配置文件

# vim /etc/named.confinclude "/etc/named/dns-key"; 将此行内容添加至文件尾部在全局options配置中修改以下内容,没有的话就添加dnssec-enable yes;dnssec-validation yes;allow-update { none; };             > 不允许客户端动态更新allow-transfer { localhost; };      > 定义只允许本机才能使用区域传送如果只想要在某个zone中使用密钥传送,按以下写法即可zone "hunk.tech" {type slave;masters { 192.168.7.254 key hunk-tech-key; };如果有多个zone中需要使用密钥传送,保持zone的设置不更改,只需要定义一个全局的server配置项即可
server 192.168.7.254 { keys hunk-tech-key; };

9. 在主DNS服务上生效配置

#named-checkconf
#rndc reload
server reload successful如果有情况的话,可以尝试重启服务

10. 在从DNS服务上生效配置

#named-checkconf
#rndc reload
server reload successful如果有情况的话,可以尝试重启服务

11. 测试TSIG

在从DNS服务器
#dig -t axfr hunk.tech -k /etc/named/dns-key @192.168.7.254    > -k 指定密钥

从日志和传送过来的区域中可以看出来


使用专用的动态更新工具来测试

#nsupdate -k /etc/named/dns-key
> server 192.168.7.254
> zone hunk.tech
> update add 9.hunk.tech 600 A 9.9.9.9
> send
> quit

在主DNS服务器日志中可以看到

client 192.168.7.254#42738: view net_192: signer "hunk-tech-key" approved
client 192.168.7.254#42738: view net_192: updating zone 'hunk.tech/IN': adding an RR at '9.hunk.tech' A

在从DNS服务器日志中可以看到

transfer of 'hunk.tech/IN/net_192' from 192.168.7.254#53: connected using 192.168.7.253#34324
zone hunk.tech/IN/net_192: transferred serial 61: TSIG 'hunk-tech-key'
transfer of 'hunk.tech/IN/net_192' from 192.168.7.254#53: Transfer completed: 1 messages, 11 records, 428 bytes, 0.006 secs (71333 bytes/sec)

在从DNS服务器传送过来的区域中可以看到序列为61的更新记录

最后一个测试,进入从DNS的slaves目录把所有区域删除,不用担心,前面讲过重启从DNS服务后,会立即同步主DNS的区域文件。

#rm -rf *
#ls
#service named restart
Stopping named: .                                          [  OK  ]
Starting named:                                            [  OK  ]
#ls
named.192.168.7  named1.hunk.tech

至此,TSIG已经正常工作了

动态DNS更新工具nsupdate

可以向DNS服务器提交更新记录的请求,它可以从区文件中添加或删除资源记录,而不需要手动进行编辑zone文件

必须的条件:指定的zone语句块或全局中添加:allow-update { any; }; 或 allow-update { IP范围; };

语法:
nsupdate [-dD] [-L level] [-l][-g | -o | -y keyname:secret | -k keyfile] [-v] [filename]-d 调试模式。
-k 从keyfile文件中读取密钥信息。
-y keyname是密钥的名称,secret是以base64编码的密钥。
-v 使用TCP协议进行nsupdate.默认是使用UDP协议。
filename:可以从终端或文件中读取命令.每个命令一行.一个空行或一个”send”命令,则会将先前输入的命令发送到DNS服务器上
指定密钥
# nsupdate -k /etc/named/dns-key更新命令
update delete|add {domain-name} [ttl] [class] [type [data...]]
class不指定的话,默认是IN
ttl可以单独写一行,后面的行继承此值
#nsupdate
> server 192.168.7.254     > 指定动态更新的DNS服务器
> zone hunk.tech            > 指定更新zone
> update add hunk.tech 600 IN A 192.168.7.204 >添加A记录
> update delete hunk.tech A 192.168.7.204     >删除A记录
> send                  > 发送更新指令到DNS服务器从文件读取指令
#nsupdate update_dns.txt
文件中的指令与交互式是一样的,一行一条指令要求domain-name中不存在任何资源记录
prereq nxdomain domain-name要求domain-name存在,并且至少包含有一条记录
prereq yxdomain domain-name要求domain-name中没有指定类别的资源记录
prereq nxrrset domain-name [ class ] type要求存在一条指定的资源记录.类别和domain-name必须存在
prereq yxrrset domain-name [ class ] type

本文转自 ljpwinxp 51CTO博客,原文链接:http://blog.51cto.com/191226139/2069648

Centos DNS服务(二)-bind主从配置与基于TSIG加密的动态更新相关推荐

  1. 高可用mongodb集群的学习记录(二mongodb主从配置)

    二mongodb主从配置 在之前我们使用mysql数据库或者redis时大家广泛用到,采用双机备份后主节点挂掉了后从节点可以接替主机继续服务.所以这种模式比单节点的高可用性要好很多. 1.环境准备 实 ...

  2. 在CentOS6.2下安装DNS服务软件Bind并快速配置简单实例

    [实践Ok]在CentOS6.2下安装DNS并快速配置实例,共八步,心路历程如下: 背景介绍: 在日常的开发中,往往会在测试机和外网的Http的Url实际接口是不一样的,在测试机一个Url地址,在外网 ...

  3. linux dns配置bind9,DNS服务(bind9)配置过程

    DNS服务(bind9)配置过程 发布时间:2006-08-22 08:57:40来源:红联作者:晚点 作者:周立军 修改日期:2006年2月23日 安装环境:Fedora 4 bind-9.2.6. ...

  4. DNS开源服务器BIND最小配置详解

    一,简介 相对于存储和大数据领域,CDN是一个相对小的领域,但行行出状元,BIND就是CDN领域的蝉联N届的状元郎.BIND是一款非常常用的DNS开源服务器,全球有90%的DNS用BIND实现.值得一 ...

  5. redhatEL7下的dns服务搭建以及ddns配置

    #################### ####配置dns服务器 #################### 服务器配置: yum install bind -y          ##安装dns服务 ...

  6. CentOS FTP服务(vsftpd)配置

    1.安装 一般在CentOS上都自动安装了vsftd,若没有安装则可以使用以下步骤进行安装 yum -y install vsftpd touch /var/log/vsftpd.log # 创建vs ...

  7. 红帽linux配置DNS服务,在linux上配置dns 服务器

    先配置主的dns服务器: 查看一下ip: 创建一个光盘挂载点: [root@localhost ~]# mkdir /mnt/cdrom 查看一下软件包的信息: 安装这些软件包: 我们进入主配置文档目 ...

  8. 模拟互联网中的dns服务布置(bind)

    操作系统:centos6 ,centos7 dns软件:bind 转载于:https://blog.51cto.com/jinshaolong/1918726

  9. bind 跟服务器修改,DNS服务(bind9)配置过程

    DNS服务器配置过程 作者: 修改日期:2006年2月23日 基础知识介绍 域名系统(Domain Name System)是一个世界级的分布式数据库,期主要任务是将"主机名称"对 ...

最新文章

  1. matplotlib01-plot折线图、scatter散点图
  2. 自定义控件详解(三):Canvas效果变换
  3. JDBC executeBatch 抛出异常停止
  4. form 中Enctype=multipart/form-data 的作用
  5. 【Android RTMP】音频数据采集编码 ( FAAC 头文件与静态库拷贝到 AS | CMakeList.txt 配置 FAAC | AudioRecord 音频采样 PCM 格式 )
  6. Django的mode的分组查询和聚合查询和F查询和Q查询
  7. 解读ImageView的wrap_content和adjustViewBounds的工作原理
  8. 怎么判断一个字符串的最长回文子串是否在头尾_最长回文字串/子序列问题(leetcode5,9,519)
  9. 干货分享|安全测试起航之旅 1
  10. 7-150 水仙花数 (20 分)
  11. 最长回文(Manacher算法模板)
  12. Thread 实现多线程同步下载网络图片(Java)
  13. 一步一步使用阿里云容器服务部署基于.NET的JEXUS网站 (转)
  14. windows下载和安装gcc编译器(MinGW)及其环境配置(C语言编译环境配置)
  15. 泛微云桥e-Bridge任意文件读取
  16. Sentinel Slot扩展实践-流控熔断预警实现
  17. ORB-SLAM2详解(一)文献导读
  18. 视频特效剪辑小技巧,给每个视频添加反相特效
  19. CUDA指定GPU的使用方法
  20. linux补丁rt ck pf zen,Linux 内核社区补丁对比

热门文章

  1. 记一次网站部署遇到的问题
  2. 彻底明白IP地址——计算相关地址
  3. mysql忘记密码,如何重置密码
  4. Linux操作系统及平台虚拟化技术漫谈
  5. rtmp Chunk stream ID 说明
  6. 连接池--在密码修改的影响
  7. 无法解决 equal to 操作中 SQL_Latin1_General_CP1_CI_AS 和 Chinese_PRC_CI_AS 之间的排序规则冲突。...
  8. 业界资讯: Air 2.0 beta 版本 发布
  9. 北京亦庄盘古T3+机房简介
  10. 主流浏览器新版本将不再支持TLS 1.0/1.1