刚刚更新了我的帖子以阐明我使用的是 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/