带有 systemd 的 getaddrinfo() API
Posted
技术标签:
【中文标题】带有 systemd 的 getaddrinfo() API【英文标题】:getaddrinfo() API with systemd 【发布时间】:2015-04-25 02:13:10 【问题描述】:我在 systemd 启动的进程下使用 getaddrinfo() API 查询 DNS 时遇到问题。尽管 /etc/resolv.conf 中有名称服务器条目,但查询无法解析。经过几次系统调用跟踪,发现问题是由于systemd解析造成的。看起来,对于由 systemd 启动的进程,getaddrinfo() DNS 查询在独立模式下通过 systemd 路由(即由 shell 产生),查询正常发生。我更改了 /etc/systemd/resolved.conf 以添加我的 DNS 地址并重新启动 systemd-resolved。现在 DNS 查询可以正常工作了。
是否有绕过 systemd 的 getaddrinfo() [例如:将额外的标志传递给提示],并以通常的方式完成工作?
【问题讨论】:
【参考方案1】:在我看来,真正的getaddrinfo()
调用应该始终使用glibc。
我最好的猜测是,与 systemd 进程启动的假设相关性完全是错误的。在 systemd 系统上,所有普通进程都由 systemd 直接或间接启动。
glibc 执行的网络名称解析不仅由/etc/resolv.conf
驱动,还由/etc/nsswitch.conf
驱动。您可能会在该文件中看到已解决。
【讨论】:
以上是关于带有 systemd 的 getaddrinfo() API的主要内容,如果未能解决你的问题,请参考以下文章