rndc:(Remote NameDomain Controller)基于套接字与named服务通信,控制named服务完成特定操作。是指通过bind 软件引进的远程控制通道,代替unix 信号来控制 named 进程,可以用来对配置进行重新载入,是一款安全软件。
rndc 通过一个 TCP 连接与域名服务器通信,发送经过数字签名认证的命令。在当前版本的rndc 和 named 中,唯一支持的认证算法是 HMAC-MD5,在连接的两端使用共享密钥。它为命令请求和名字服务器的响应提供 TSIG类型的认证。所有经由通道发送的命令都必须被一个服务器所知道的 key_id 签名。
rndc 读一个配置文件来决定如何联系域名服务器并决定使用哪一个算法和密钥。
rndc可以对本地及远程DNS服务器进行管理、控制而不用重启BIND,我们接下来介绍一下rndc实现管理本地DNS服务器或者远程DNS服务器。
其实我们使用上面的密钥就可以了,但是我们可以通过rndc的命令来实现新建密钥配置文件,达到增强安全性的目的。
rndc-confgen
命令能够生成一个rndc的配置文件,直接导入到/etc/rndc.conf就可以了。如果执行时卡住,是因为系统的熵值不足了。因为rndc-confgen命令默认会去/dev/random和/dev/urandom读取随机数生成密钥,第一顺序是/dev/random。
- /dev/random:从熵池中取随机数,如果熵池中的随机数被用尽,则阻塞相关进程
- /dev/urandom:从熵池中取随机数,如果熵池中的随机数被用尽,则用软件生成伪随机数
我们可以使用/dev/urandom
来生成随机数密钥,我们将其结果输入一个rndc配置文件保存:
[root@dns1 named]# rndc-confgen -r /dev/urandom >/etc/rndc.conf
我不使用/etc/rndc.key文件,所以需要将其删除,不然会报错
[root@izuf66h25ghj5nl2p0kvu5z PrivateDNS]# rndc-confgen > /etc/rndc.conf
[root@izuf66h25ghj5nl2p0kvu5z PrivateDNS]# cat /etc/rndc.conf
# Start of rndc.conf
key "rndc-key" {
algorithm hmac-md5;
secret "7Voy3qL3Mq5yiDtingnK4Q==";
};
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 "7Voy3qL3Mq5yiDtingnK4Q==";
# };
#
# controls {
# inet 127.0.0.1 port 953
# allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf
1.1. 修改配置文件/etc/named.conf
将rndc的注释中key和controls部分copy到/etc/named.conf文件中
key "rndc-key" {
algorithm hmac-md5;
secret "7Voy3qL3Mq5yiDtingnK4Q==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
2. rndc
rndc的常用命令
语法:rndc [-b source-address] [-c config-file] [-k key-file] [-s server]
-p port] {command}
rndc -h 获取帮助 reload #重新装载配置文件及区域解析库文件 reload zone #只装载指定区域解析库文件 refresh zone #维护 retransfer zone #在不检查序列号的情况下直接传送一个区域数据文件 notify zone #重新通知区域数据文件 reconfig #只重新装载配置文件及新增的区域 querylog #启用或关闭查询日志,默认关闭
#rndc querylog
#rndc status
#
#tail /var/log/messages
stop #将更新信息发送给服务器,然后关闭DNS服务器 trace level #指明调试级别,不跟数字逐级增加,可以明确指定(如trace 3) notrace #关闭调试 flush #清除服务器缓存