getnameinfo无法执行反向DNS

时间:2019-05-13 18:34:47

标签: c macos networking dns ip

目标:根据sockaddr返回FQDN

我正在尝试使用 getnameinfo 进行反向DNS查找并返回example.com的FQDN,但是下面的代码无法显示错误EAI_NONAME(8)的FQDN。在运行下面的代码之前,我在浏览器中打开 example.com 以确保DNS缓存包含domain_name到ip_address的映射,但是下面的代码似乎无法返回“ example.com”作为FQDN。我想念什么吗?我正在使用macOS 10.14.4,并使用Falling back to patching base and 3-way merge...

编译代码
gcc "filename.c"

1 个答案:

答案 0 :(得分:2)

反向查找不使用DNS缓存。相反,它使用rDNS lookup,即in-addr.arpa伪域。好吧,事实证明:

% host 93.184.216.34
Host 34.216.184.93.in-addr.arpa. not found: 3(NXDOMAIN)

该IP地址没有反向PTR记录。

如果您将地址替换为8.8.8.8,则说得到

% ./a.out           
getnameinfo with NI_NAMEREQD flag:
host: google-public-dns-a.google.com
serv: http

这仅仅是因为:

% host 8.8.8.8      
8.8.8.8.in-addr.arpa domain name pointer google-public-dns-a.google.com.