gethostbyaddr 会泄露我服务器的 IP 地址吗?

Does gethostbyaddr reveals my server's IP address?

我使用 CloudFlare,所以我的服务器 IP 地址是隐藏的,我想保持这种状态。当我发出 HTTP 请求时,显然我的 IP 会被泄露。但是 gethostbyaddr 会泄露我的 IP 地址吗?我想获取用户的IP主机,所以我这样做:

$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);

用户能通过这个查到我服务器的IP地址吗?

gethostbyaddr 执行 反向 DNS 查找。它不直接联系主机。但是,它可能联系 DNS 服务器进行反向查找。

通常 PHP会请求系统的DNS服务进行反向查找,如果答案恰好没有被缓存,该服务会联系离它最近的DNS 服务器得到答案。如果 that 没有答案,它将出去并联系 its 最近的上游服务器等等,直到答案回来。

因此,服务器很少会比其最近的 DNS 服务器延伸得更远。不过这当然不是不可能,而且 如果 您的服务器碰巧联系了您的用户恰好可以控制的 DNS 服务器,则该用户可以看到传入的 DNS 解析请求。

这种情况极为罕见,而且通常情况下,您的服务器唯一与之联系的 DNS 服务器是其最近的 DNS 服务器,但不能完全排除这种可能性。