前言
本文将介绍如何使用 npm 包 bind9-rndc,该包用于与绑定服务(Bind)的远程管理接口(RNDC)进行交互。通过使用该包,可以方便地进行 DNS 记录的添加、删除、修改等管理操作,从而实现更精细化、可靠性更高的 DNS 服务。
安装
使用 npm 包管理器进行安装:
npm install bind9-rndc --save
配置
使用 bind9-rndc 之前,需要先配置 RNDC 的访问授权,可在 Bind 的全局配置文件(/etc/bind/named.conf.options)中添加如下内容:
controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { rndc-key; }; };
授权信息包括监听地址、端口号、允许访问地址、秘钥等。 rn dc-key 的配置需要与后面的步骤配合使用。
同时,需要在 RNDC 的配置文件中指定授权信息:
-- -------------------- ---- ------- --- ---------- - --------- --------- ------ --------- -- -------- - ---- --------- ---- --- ----- - ---------- - ---- - --------- -- --
其中,algorithm 可根据需求进行修改,hmac-md5 为常用的选项。 secret 为授权秘钥,可以使用如下命令生成:
rndc-confgen -a -c /etc/bind/rndc.key
生成的 rndc.key 必须与上述配置文件中的授权秘钥保持一致。
使用
初次使用 bind9-rndc,需要先设置目标 RNDC 地址及秘钥等信息:
const RNDC = require('bind9-rndc'); const rndc = new RNDC({ host: '127.0.0.1', port: 953, secret: '这里填写密钥' });
默认情况下,RNDC 的监听地址为 127.0.0.1,端口号为 953。
待设置完成后,即可开始进行 DNS 记录的操作。以下代码示例演示了如何添加 A 类别记录:
rndc.add('example.org', '192.0.2.1', 'A', (err, stdout, stderr) => { if (err) { console.log('添加记录出错:', err, stderr); } else { console.log('添加记录成功:', stdout); } });
其中,第一个参数为记录的完整域名,第二个参数为 IP 地址,第三个参数为记录类型。若需添加多个记录,可使用以下方法:
-- -------------------- ---- ------- ----- ------- - - - ----- ------------------ ------ ------------ ----- --- -- - ----- ------------------- ------ ------------ ----- ----- --------- -- -- -- -- -- ---------------------------- -------- ----- ------- ------- -- - -- ----- - ------------------------ ---- -------- - ---- - ------------------------ -------- - ---
其中,records 为一个数组,包含了多个记录对象。每个对象中包含 name(记录名)、value(值)、type(类型)和 priority(仅 MX 记录需要)四个属性。
与添加操作类似,删除操作也提供了单个和批量两种方式:
-- -------------------- ---- ------- -- ------- ----------------------- ---- ----- ------- ------- -- - -- -- -- --- -- ------ ----- ------- - - - ----- ------------------ ----- --- -- - ----- ------------------- ----- ---- -- -- -- -- ---------------------------- -------- ----- ------- ------- -- - -- -- -- ---
修改操作需要先读取当前记录的设置,然后执行更新操作:
-- -------------------- ---- ------- ----------------------- ---- ----- -------- -- - -- ----- - ---------------------- ----- - ---- - ---------------------- -- - --------------- - ------------ --- ----------------------- -------- ----- ------- ------- -- - -- ----- - ---------------------- ---- -------- - ---- - ---------------------- -------- - --- - ---
其中,rndc.get 读取指定域名下的指定类型的记录,并将其转化为数组形式。数组中的每个元素都包含 name(记录名)、value(原始值)、newValue(要修改的新值)、type(类型)等四个属性。记录修完后,调用 rndc.set 保存即可。
总结
本文介绍了如何使用 bind9-rndc 包进行 DNS 记录的添加、删除、修改等操作。该包封装了 RNDC 的访问接口,使用方便,能够提高 DNS 服务的可靠性和管理效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600570ba81e8991b448e7fdf