gpt4 book ai didi

dns - 使用 glibc,为什么在 I/DHCP 更改 DNS 服务器后我的 gethostbyname 失败?

转载 作者:行者123 更新时间:2023-12-02 11:51:29 25 4
gpt4 key购买 nike

如果我们的服务器(在设备上运行)在获取 DHCP 租约之前启动,那么它永远无法使用主机名进行连接。

如果发生这种情况,它可以通过 IP 地址查找主机,但不能通过 DNS 查找主机。

我最初认为 Curl DNS 缓存有问题,因为curl 连接失败。但我使用CURLOPT_DNS_CACHE_TIMEOUT来阻止curl缓存地址,但连接仍然失败。

最佳答案

事实证明,如果配置发生更改,glibc gethostbyname_r 不会自动重新加载其配置。您必须手动调用 res_init。请参阅bug report下面。

注意:gethostbyname_r 和 rer_init 的手册页均未提及此限制。

我的解决方案非常具体。它适用于我们长期运行的服务器,但它不是我理想的解决方案。

我有一个函数可以根据上次已知的 mtime(DNE 为 0)检查/etc/resolv.conf 的 mtime。如果两个时间不同的话我调用res_init。该函数在程序启动时调用,然后定期调用以选择性地重新加载配置。

<小时/>

glibc bug report

libc caches resolv.conf forever

...

That's what res_init() is for, call it.

关于dns - 使用 glibc,为什么在 I/DHCP 更改 DNS 服务器后我的 gethostbyname 失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/125466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com