Альтернатива вызову библиотеки glibc res_ninit для получения подробностей DNS через DHCP - PullRequest
0 голосов
/ 27 февраля 2019

Есть ли хорошая альтернатива API для res_ninit?Есть проблемы с этим вызовом, потому что res->_u.ext.nscount6 и res->nscount не отражают правильные числа.Добавление адреса IPv6 к /etc/resolv.conf по-прежнему приводит к увеличению nscount, где можно было бы ожидать увеличения nscount6.

Старая версия glibc, кажется, увеличивает как nscount, так и nscount6 дляIPv6-адрес в /etc/resolv.conf.

. В настоящее время я анализирую resolv.conf напрямую, потому что не могу зависеть от вызова res_ninit.Но это хорошо для ручного DNS.

Когда дело доходит до DHCP DNS, тогда мне нужен API, чтобы дать мне результат.Нет другого способа (который я могу придумать) определить IP-адреса DNS через DHCP.

Пробная публикация в других местах на плате, но пока это не поможет.Например,

Извлечение серверов имен IPv4 и IPv6 программным способом

1 Ответ

0 голосов
/ 28 февраля 2019

res_ninit и res_init только когда-либо читали информацию сервера имен из /etc/resolv.conf.Вы всегда можете получить одинаковые серверы имен данных, проанализировав /etc/resolv.conf самостоятельно и изучив строки nameserver.Если нет строки nameserver, будет использоваться значение по умолчанию 127.0.0.1.

Я не думаю, что для этого нужно предоставлять API, потому что формат файла настолько прост, что вероятно больше труднее использовать API, чем читать файл.

Назначение сервера имен через DHCP осуществляется путем переписывания /etc/resolv.conf, если на машине не работает локальный решатель кэширования.Точный механизм, используемый для этого, зависит от дистрибутива, например, Debian использует resolvconf, если он установлен.

Если в системе работает локальный решатель кэширования (например, dnsmasq или Unbound).), серверы имен через DHCP могут быть напрямую настроены в этом решателе кэширования.В этом случае /etc/resolv.conf будет продолжать указывать на один и тот же сервер имен, как правило, перечисляя nameserver 127.0.0.1 или вообще не указывать информацию о сервере имен (по умолчанию).

...