【问题标题】:Alternative to glibc Library call res_ninit for getting DNS details over DHCPglibc 库调用 res_ninit 的替代方法,用于通过 DHCP 获取 DNS 详细信息
【发布时间】:2019-02-27 07:19:54
【问题描述】:

res_ninit 有没有好的 API 替代品? 此调用存在问题,因为 res->_u.ext.nscount6res->nscount 未反映正确的数字。将 IPv6 地址添加到 /etc/resolv.conf 仍会导致 nscount 增加,而您预计 nscount6 会增加。

较旧的 glibc 版本似乎增加了 nscountnscount6 对于/etc/resolv.conf 中的 IPv6 地址。

我目前正在直接解析resolv.conf,因为我无法依赖res_ninit 调用。但这对于手动 DNS 来说很好。

当谈到 DHCP DNS 时,我需要一个 API 来给我结果。没有其他方法(我能想到的)通过 DHCP 确定 DNS IP 地址。

尝试在董事会的其他地方发帖,但到目前为止没有帮助。例如

Retrieve IPv4 and IPv6 nameservers programmatically

【问题讨论】:

    标签: dns glibc resolve


    【解决方案1】:

    res_ninitres_init 只从/etc/resolv.conf 读取名称服务器信息。您始终可以通过自己解析/etc/resolv.conf 并检查nameserver 行来获得相同的数据名称服务器。如果没有nameserver 行,将使用默认的127.0.0.1

    我认为没有必要为此提供 API,因为文件格式非常简单,使用 API 可能比读取文件更难

    如果机器上没有运行本地缓存解析器,则通过重写 /etc/resolv.conf 来实现通过 DHCP 分配名称服务器。用于此的确切机制是特定于发行版的,例如Debian 使用 resolvconf 如果已安装。

    如果系统上正在运行本地缓存解析器(例如 dnsmasq 或 Unbound),则可以在该缓存解析器中直接配置通过 DHCP 的名称服务器。在这种情况下,/etc/resolv.conf 将继续指向同一个名称服务器,通常列出 nameserver 127.0.0.1 或根本没有名称服务器信息(这是默认设置)。

    【讨论】:

      猜你喜欢
      • 2021-11-24
      • 2014-11-08
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-23
      • 1970-01-01
      相关资源
      最近更新 更多