用于更新 Bind9 DNS 的 C++ 程序

标签 c++ dns debian bind named

刚刚更新了我的帖子以阐明我使用的是 Bind9/named DNS。我找到了图书馆,但大多数都实现了自己的 DNS,所以我无法使用它们。 我想做一个 c++ 程序(在 linux/debian 上运行)来使用 bind9 更新本地 DNS 和新记录,然后传播信息,以便其他节点可以更新其本地 DNS。 实际上我得到了一个解决方案,但我想知道是否有更合适的方法(例如使用一些库),然后创建新类型的记录而不仅仅是 NAPTR。

我有包含各种信息(服务/域)的消息,我已经在使用这些信息来创建 NAPTR 记录,但该方法非常丑陋。我将我需要的所有 nsupdate 命令写入一个 txt 文件,例如:

std::ofstream nsupdateCommand("/tmp/nsupdate.txt", std::ofstream::out | std::ofstream::trunc);
nsupdateCommand << "update add" << enumName << "." << zone << ". "<< ttl << " NAPTR ";
[...]
nsupdateCommand << "send";
nsupdateCommand.close();
system("nsupdate -l -v /tmp/nsupdate.txt")

我想知道是否有更好的方法在 C++ 中更新 DNS,可能使用套接字或库?

如有任何帮助,我们将不胜感激。

最佳答案

ldd `which nsupdate` |grep dns
        libdns.so.81 => /usr/lib64/libdns.so.81 (0x000000348b000000)
rpm -qf /usr/lib64/libdns.so.81
bind-libs-9.8.2-0.62.rc1.el6_9.5.x86_64

在 CentOS 上,您需要安装 bind-devel 以获取 bind-libs 的头文件。其他发行版可能会以略有不同的名称打包它们。

关于用于更新 Bind9 DNS 的 C++ 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55953535/

相关文章:

c++ - 在 C++ 中将字符串 vector 转换为 char 数组

c++ - 绑定(bind)和 boost 功能

dns - 如何为我的用户启用自定义域?

debian - 您如何使用 saltstack 添加包 repo 和 apt key ?

c++ - 排序算法的交换函数不适用于排序函数的参数。

c++ - 为什么 assert 定义为 (void)0?

performance - 通过主机名传播静态文件

windows - 脚本忽略退出命令并中断函数 BATCH/CMD

python - 须藤 pip 列表: OpenSSL issue

raspberry-pi - hostapd重复 “deauthenticated due to local deauth request”