带有systemd的getaddrinfo()API

时间:2015-04-25 02:13:11

标签: getaddrinfo

我在使用systemd启动的进程下使用getaddrinfo()API查询DNS时遇到问题。尽管在/etc/resolv.conf中有nameserver条目,但查询无法解析。在几次系统调用跟踪之后,发现该问题是由系统分辨率引起的。对于systemd所引发的进程,似乎是在独立模式下(即由shell生成)通过systemd路由的getaddrinfo()DNS查询,查询正常进行。我更改了/etc/systemd/resolved.conf以添加我的DNS地址并重新启动systemd-resolved。现在DNS查询正常工作。

有没有为getaddrinfo()绕过systemd [例如:将额外的标志传递给提示],并以通常的方式完成工作?

1 个答案:

答案 0 :(得分:0)

在我看来,真正的getaddrinfo()调用应该始终使用glibc。

我最好的猜测是假设与系统进程启动的相关性完全是错误的。在systemd系统上,所有普通进程都由systemd直接或间接启动。

glibc执行的网络名称解析不仅由/etc/resolv.conf驱动,还由/etc/nsswitch.conf驱动。您可能会看到该文件中提到的已解决。