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 服务器,但不能完全排除这种可能性。
我使用 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 服务器,但不能完全排除这种可能性。