Вы не можете доверять имени, возвращенному gethostbyaddr. DNS-сервер с полномочиями на определенный IP-адрес может вообще вернуть любое имя хоста.
Обычно администраторы настраивают DNS-серверы для ответа с правильным именем хоста, но злоумышленник может настроить свой DNS-сервер для ответа с неправильными именами хостов. Вы можете избежать попадания в эту ловушку, когда вы вызываете gethostbyname на имя хоста, возвращаемое из gethostbyaddr, и убедитесь, что имя разрешает исходный IP-адрес.
Но есть еще ... иногда одно имя хоста может сопоставляться с несколькими IP-адресами.
var_dump(gethostbynamel('google.com'));
возвращает
array(6) {
[0]=>
string(14) "173.194.69.104"
[1]=>
string(14) "173.194.69.147"
[2]=>
string(14) "173.194.69.105"
[3]=>
string(14) "173.194.69.106"
[4]=>
string(14) "173.194.69.103"
[5]=>
string(13) "173.194.69.99"
}
В общем, вы вам нужно будет узнать о копании DNS и обратном DNS-поиске. Это долгий путь, чтобы ходить, но вы можете доверять мне, когда я говорю, что это интересно.