什么是rndc
rndc(Remote Name Domain Controllerr)是一个远程管理bind的工具,通过这个工具可以在本地或者远程了解当前服务器的运行状况,也可以对服务器进行关闭、重载、刷新缓存、增加删除zone等操作。
rndc可以干什么
使用rndc可以在不停止DNS服务器工作的情况进行数据的更新,使修改后的配置文件生效。在实际情况下,DNS服务器是非常繁忙的,任何短时间的停顿都会给用户的使用带来影响。因此,使用rndc工具可以使DNS服务器更好地为用户提供服务。在使用rndc管理bind前需要使用rndc生成一对密钥文件,一半保存于rndc的配置文件中,另一半保存于bind主配置文件中。rndc的配置文件为/etc/rndc.conf,在CentOS或者RHEL中,rndc的密钥保存在/etc/rndc.key文件中。rndc默认监听在953号端口(TCP),其实在bind9中rndc默认就是可以使用,不需要配置密钥文件。
rndc是安全的
rndc与DNS服务器实行连接时,需要通过数字证书进行认证,而不是传统的用户名/密码方式。在当前版本下,rndc和named都只支持HMAC-MD5认证算法,在通信两端使用预共享密钥。在当前版本的rndc 和 named中,唯一支持的认证算法是HMAC-MD5,在连接的两端使用共享密钥。它为命令请求和名字服务器的响应提供 TSIG类型的认证。所有经由通道发送的命令都必须被一个服务器所知道的 key_id 签名。为了生成双方都认可的密钥,可以使用rndc-confgen命令产生密钥和相应的配置,再把这些配置分别放入named.conf和rndc的配置文件rndc.conf中。
测试
在服务器192.168.86.202上使用rndc-confgen命令生成配置
按照提示将前key和options拷贝到/etc/rndc.conf,key和controls追加到/etc/named.conf末尾
[root@localhost ~]# rndc-confgen
# Start of rndc.conf
key "rndc-key" {
algorithm hmac-md5;
secret "bX9vkARihmd5lvuiGzmDRA==";
};
options {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf
# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
# algorithm hmac-md5;
# secret "bX9vkARihmd5lvuiGzmDRA==";
# };
#
# controls {
# inet 127.0.0.1 port 953
# allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf
服务器配置
在named.conf末尾加入key及允许管理的ip192.168.86.198
[root@heweiwei heweiwei]# vim /etc/named.conf
key "rndc-key" {
algorithm hmac-md5;
secret "bX9vkARihmd5lvuiGzmDRA==";
};
controls {
inet 0.0.0.0 port 953
allow { 127.0.0.1; 192.168.86.198; } keys { "rndc-key"; };
};
客户端配置
同理在客户端192.168.86.198使用rndc-confgen命令生成配置 修改/etc/rndc.conf,将key修改成服务器的key,option中的server修改成服务器的server。
[root@localhost heweiwei]# vim /etc/rndc.conf
key "rndc-key" {
algorithm hmac-md5;
secret "bX9vkARihmd5lvuiGzmDRA==";
};
#secret "G6lzTGaz2VaKYUpqQleM8A==";
options {
default-key "rndc-key";
default-server 192.168.86.202;
default-port 953;
};
客户端测试
在服务器配置完之后重启后再客户端测试
[root@localhost heweiwei]# rndc -s 192.168.86.202 status
version: 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.1
CPUs found: 4
worker threads: 4
number of zones: 20
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
至此配置成功
rndc常用功能
测试
addzone 在服务器192.168.86.202添加域文件/var/named/rndc.com.zone
[root@heweiwei heweiwei]# vim /var/named/rndc.com.zone
$TTL 600
@ IN SOA dns.rndc.com. dnsadmin.rndc.com. (
2019040410
2H
4M
1W
2D
)
@ IN NS dns.rndc.com.
@ IN MX 10 mail.rndc.com.
dns IN A 192.168.86.202
mail IN A 192.168.86.111
www IN A 222.68.66.22
权限问题很关键
[root@heweiwei heweiwei]# chgrp named /var/named/rndc.com.zone
[root@heweiwei heweiwei]# chmod 660 /var/named/rndc.com.zone
[root@heweiwei heweiwei]# ll /var/named/|grep rndc
-rw-rw----. 1 root named 430 May 20 16:21 rndc.com.zone
在客户端192.168.86.198使用rndc管理服务器192.168.86.202添加域rndc.com
[root@localhost heweiwei]# rndc -s 192.168.86.202 -p 953 addzone rndc.com '{ type master; file "rndc.com.zone"; };'
[root@localhost heweiwei]#
[root@localhost heweiwei]# dig www.rndc.com @192.168.86.202
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.1 <<>> www.rndc.com @192.168.86.202
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49040
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.rndc.com. IN A
;; ANSWER SECTION:
www.rndc.com. 600 IN A 222.68.66.22
;; AUTHORITY SECTION:
rndc.com. 600 IN NS dns.rndc.com.
;; ADDITIONAL SECTION:
dns.rndc.com. 600 IN A 192.168.86.202
;; Query time: 1 msec
;; SERVER: 192.168.86.202#53(192.168.86.202)
;; WHEN: Mon May 20 01:22:58 2019
;; MSG SIZE rcvd: 80
[root@localhost heweiwei]#
说明添加成功