gethostbynamel () и dns_get_record () возвращает пустые значения для некоторых доменов.
Я использую виртуальную машину вычислительного экземпляра Google Cloud, установил Debian 10 и PHP 7.3.
Затем попытался запустить это:
php -r "print_r(gethostbynamel('2.0.0.127.zen.spamhaus.org.'));"
Удивительно, но он возвращает пустую строку.
Однако на любой другой виртуальной машине, не относящейся к Google Cloud, он отлично работает:
Array ( [0] => 127.0.0.4 [1] => 127.0.0.10 [2] => 127.0.0.2 )
Еще более странно, что с gethostbyname() он отлично работает:
php -r "print_r(gethostbyname('2.0.0.127.zen.spamhaus.org.'));"
Но очевидно, что я получаю только один результат, а не все.
Я пробовал также эту команду:
php -r "print_r(dns_get_record('2.0.0.127.zen.spamhaus.org.', DNS_A));"
Но он возвращает пустой массив.
Итак, gethostbynamel () и dns_get_record (), похоже, показывают пустые поля.
Пока gethostbyname() работает отлично.
Я открыл порт 53 TCP для исходящего трафика в брандмауэре Google.
Кто-нибудь знает, почему происходит такое поведение?
Если у вас есть предложения, поделитесь ими.
1 ответ
Это известное и ожидаемое поведение, которое также было обнаружено на сайте spamhaus .
Это также применимо к внутреннему преобразователю DNS для вашей виртуальной машины. Google DNS вернет ответ «нет в списке» (NXDOMAIN) от общедоступных DNSBL-серверов Spamhaus, поскольку для служб Google DNS включен DNSBlock.
Я рекомендую вам использовать свои собственные DNS-серверы при выполнении DNSBL-запросов к Spamhaus. Если это невозможно, свяжитесь со чтобы Spamhaus Technology,узнать о других возможностях.
Для получения дополнительной информации о DNSBL перейдите по ссылке