替代 glibc 库调用 res_ninit 以通过 DHCP 获取 DNS 详细信息
Alternative to glibc Library call res_ninit for getting DNS details over DHCP
有 API 替代 res_ninit
的好方法吗?
此调用存在问题,因为 res->_u.ext.nscount6
和 res->nscount
未反映正确的数字。将 IPv6 地址添加到 /etc/resolv.conf
仍然会导致 nscount
在您预期 nscount6
增加的地方增加。
较旧的 glibc 版本似乎在 /etc/resolv.conf
.
中增加了 IPv6 地址的 nscount
和 nscount6
我目前正在直接解析 resolv.conf
,因为我无法依赖 res_ninit
调用。但这对于手动 DNS 来说很好。
当谈到 DHCP DNS 时,我需要一个 API 来给我结果。没有其他方法(我能想到)通过 DHCP 确定 DNS IP 地址。
尝试在版块内的其他地方发帖,但目前无济于事。例如
res_ninit
和 res_init
只从 /etc/resolv.conf
读取名称服务器信息。您始终可以通过自己解析 /etc/resolv.conf
并检查 nameserver
行来获得相同的数据名称服务器。如果没有 nameserver
行,将使用默认的 127.0.0.1
。
我认为没有必要为此提供 API,因为文件格式非常简单,可能 more 难以使用 API 而不是读取文件。
如果机器上没有本地缓存解析器 运行,则通过重写 /etc/resolv.conf
实现通过 DHCP 的名称服务器分配。用于此的确切机制是特定于发行版的,例如如果安装了 Debian,则使用 resolvconf
。
如果本地缓存解析器在系统上 运行(例如 dnsmasq 或 Unbound),则可以在该缓存解析器中直接配置基于 DHCP 的名称服务器。在这种情况下,/etc/resolv.conf
将继续指向相同的名称服务器,通常是通过列出 nameserver 127.0.0.1
或根本没有名称服务器信息(这是默认设置)。
有 API 替代 res_ninit
的好方法吗?
此调用存在问题,因为 res->_u.ext.nscount6
和 res->nscount
未反映正确的数字。将 IPv6 地址添加到 /etc/resolv.conf
仍然会导致 nscount
在您预期 nscount6
增加的地方增加。
较旧的 glibc 版本似乎在 /etc/resolv.conf
.
nscount
和 nscount6
我目前正在直接解析 resolv.conf
,因为我无法依赖 res_ninit
调用。但这对于手动 DNS 来说很好。
当谈到 DHCP DNS 时,我需要一个 API 来给我结果。没有其他方法(我能想到)通过 DHCP 确定 DNS IP 地址。
尝试在版块内的其他地方发帖,但目前无济于事。例如
res_ninit
和 res_init
只从 /etc/resolv.conf
读取名称服务器信息。您始终可以通过自己解析 /etc/resolv.conf
并检查 nameserver
行来获得相同的数据名称服务器。如果没有 nameserver
行,将使用默认的 127.0.0.1
。
我认为没有必要为此提供 API,因为文件格式非常简单,可能 more 难以使用 API 而不是读取文件。
如果机器上没有本地缓存解析器 运行,则通过重写 /etc/resolv.conf
实现通过 DHCP 的名称服务器分配。用于此的确切机制是特定于发行版的,例如如果安装了 Debian,则使用 resolvconf
。
如果本地缓存解析器在系统上 运行(例如 dnsmasq 或 Unbound),则可以在该缓存解析器中直接配置基于 DHCP 的名称服务器。在这种情况下,/etc/resolv.conf
将继续指向相同的名称服务器,通常是通过列出 nameserver 127.0.0.1
或根本没有名称服务器信息(这是默认设置)。