Я использую CloudFlare, поэтому IP-адрес моего сервера скрыт, и я хочу сохранить его таким. Когда я делаю HTTP-запрос, очевидно, что мой IP будет раскрыт. Но делает gethostbyaddr
показывает мой IP-адрес? Я хочу получить IP-хост пользователя, поэтому я делаю:
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
Сможет ли пользователь узнать по этому адресу IP-адрес моего сервера?
gethostbyaddr
делает обратный поиск DNS. Он не связывается с хостом напрямую. Тем не менее, это может свяжитесь с DNS-серверами, чтобы выполнить обратный поиск.
типично PHP запросит системный DNS-сервис об обратном поиске, и если ответ не будет кэширован, служба свяжется с ближайшим DNS-сервером, чтобы получить ответ. Если тот нет ответа, он выйдет и свяжется его ближайший вышестоящий сервер и т. д. и т. д., пока ответ не вернется.
Таким образом, редко, если когда-либо, сервер должен выходить дальше, чем его ближайший DNS-сервер. Это, конечно, не невозможно, и если ваш сервер связывается с DNS-сервером, который ваш пользователь контролирует, чтобы этот пользователь мог видеть входящий запрос разрешения DNS.
Это будет крайне редко, и опять же, как правило, единственный DNS-сервер, с которым ваш сервер будет контактировать, это его ближайший DNS-сервер, но он не может быть полностью исключен.
Других решений пока нет …