C ++ Программа для обновления Bind9 DNS - PullRequest
0 голосов
/ 02 мая 2019

Только что обновил свой пост, чтобы уточнить, что я использую Bind9 / с именем DNS. Я нашел библиотеки, но большинство из них используют свои собственные DNS, поэтому я не могу их использовать. Я хочу создать программу на С ++ (работающую в linux / debian), чтобы обновлять локальный DNS с помощью bind9 новыми записями, а затем распространять информацию, чтобы другие узлы могли обновить свой локальный DNS. На самом деле у меня есть решение, но я хотел бы знать, существует ли более правильный способ сделать это (например, с некоторыми библиотеками), и после этого создавать новые типы записей, а не только NAPTR.

У меня есть сообщения с различной информацией (услуга / домен), и я уже использую эти данные для создания записей NAPTR, но метод очень уродлив. Я записываю в текстовый файл все команды nsupdate, которые мне нужны, например:

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")

Я хотел бы знать, есть ли лучший способ обновить DNS в c ++, возможно, с помощью сокетов или библиотеки?

Любая помощь будет оценена.

1 Ответ

1 голос
/ 02 мая 2019
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.Другие дистрибутивы могут упаковывать их под немного другими именами.

...