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 перейдите по ссылке

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