Я пытаюсь проверить IP-адрес сервера NS / DNS, предоставленный пользователем, с помощью dns_get_record ().
Код:
$site = 'google.com';
$ns = array('104.28.4.30'); // Some Ip Address not NS / DNS
echo '<pre>';
$result = dns_get_record($site, DNS_A, $ns);
print_r($result);
print_r($ns);
Выход:
Array
(
[0] => Array
(
[host] => google.com
[class] => IN
[ttl] => 299
[type] => A
[ip] => 74.125.200.113
)
...
[5] => Array
(
[host] => google.com
[class] => IN
[ttl] => 299
[type] => A
[ip] => 74.125.200.101
)
)
Array
(
)
Поскольку я предоставил некоторый случайный Ip, но dns_get_record (), похоже, каким-то образом извлекает записи независимо от того, предоставлен ли Ip NS / DNS или нет.
PS. Я знаю о классе NET_DNS2, но подумал, есть ли обходной путь в нативном PHP.
Третий аргумент dns_get_record()
является выходным параметром, начальное значение игнорируется. Заполняется функцией с авторитетными серверами для домена.
Однако DNS-серверы не всегда возвращают список доверенных серверов в своих ответах, это настраиваемый параметр в большинстве серверов имен (включая BIND
, самый распространенный сервер имен). Если сервер ничего не возвращает в разделе авторизации ответа, массив будет пустым.
Других решений пока нет …