Gethostbyaddr показывает IP-адрес моего сервера?

Я использую CloudFlare, поэтому IP-адрес моего сервера скрыт, и я хочу сохранить его таким. Когда я делаю HTTP-запрос, очевидно, что мой IP будет раскрыт. Но делает gethostbyaddr показывает мой IP-адрес? Я хочу получить IP-хост пользователя, поэтому я делаю:

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

Сможет ли пользователь узнать по этому адресу IP-адрес моего сервера?

1 ответ

Решение

gethostbyaddr делает обратный поиск DNS. Он не связывается с хостом напрямую. Однако он может связаться с DNS-серверами, чтобы выполнить обратный поиск.

Обычно PHP запрашивает системный DNS-сервис для обратного поиска, и если ответ не кэшируется, служба свяжется с ближайшим DNS-сервером, чтобы получить ответ. Если у него нет ответа, он выйдет и свяжется с ближайшим вышестоящим сервером и т. Д. И т. Д., Пока ответ не вернется.

Таким образом, редко, если когда-либо, сервер должен выходить дальше, чем его ближайший DNS-сервер. Это, конечно, не невозможно, и если ваш сервер связывается с DNS-сервером, который ваш пользователь контролирует, этот пользователь может увидеть входящий запрос разрешения DNS.

Это будет крайне редко, и опять же, как правило, единственный DNS-сервер, с которым ваш сервер будет контактировать, это его ближайший DNS-сервер, но он не может быть полностью исключен.

Другие вопросы по тегам