Получить DNS записи домена в PHP

Функция dns_get_record($domain) поучает все записи домена, подробнее на php.net.

$dns = dns_get_record('yandex.ru');
print_r($dns);
PHP

В результате получаем массив значений:

Array (
    [0] => Array (
		[host] => yandex.ru
		[class] => IN
		[ttl] => 3600
		[type] => SOA
		[mname] => ns1.yandex.ru
		[rname] => sysadmin.yandex-team.ru
		[serial] => 2019032625
		[refresh] => 600
		[retry] => 300
		[expire] => 2592000
		[minimum-ttl] => 900
    )
    [1] => Array (
		[host] => yandex.ru
		[class] => IN
		[ttl] => 3600
		[type] => CAA
		[flags] => 0
		[tag] => issue
		[value] => globalsign.com
	)
    [2] => Array (
		[host] => yandex.ru
		[class] => IN
		[ttl] => 3600
		[type] => CAA
		[flags] => 0
		[tag] => issuewild
		[value] => globalsign.com
	)
	...
)

Он не удобен т.к. записи идут в перемешку, скомпонуем его по типу записей.

$dns = dns_get_record('yandex.ru');

$new = array();
foreach ($dns as $row) {
	$new[$row['type']][] = $row;
}

print_r($new);
PHP
Array (
	[MX] => Array (
		[0] => Array (
			[host] => yandex.ru
			[class] => IN
			[ttl] => 162
			[type] => MX
			[pri] => 10
			[target] => mx.yandex.ru
		)
	)
    [NS] => Array (
		[0] => Array (
			[host] => yandex.ru
			[class] => IN
			[ttl] => 345600
			[type] => NS
			[target] => ns2.yandex.ru
		)
		[1] => Array (
			[host] => yandex.ru
			[class] => IN
			[ttl] => 345600
			[type] => NS
			[target] => ns9.z5h64q92x9.net
		)
		[2] => Array (
			[host] => yandex.ru
			[class] => IN
			[ttl] => 345600
			[type] => NS
			[target] => ns1.yandex.ru
		)
	)
    ...
)

Так лучше, можно обработать NS-записи или настойки почты.

Для справки: типы записей DNS

Тип Описание
A IP-адрес сервера
AAAA IPv6 адрес сервера
CAA Авторизованный центр сертификации
CNAME Привязка поддоменов и алисов
MX Адрес и настройки почтового сервера
NS DNS серверы хостинга
PTR Соответствие IP-адрес сервера с его доменом
SOA Указание на авторитетность информации
TXT Текстовые записи
23.03.2019, обновлено 10.09.2019 330

Поделится

Другие публикации

Если нужно запретить выполнение скриптов php в директории, например в uploads, нужно поместить туда файл .htaccess со...
В некоторых случаях требуется запретить определенные методы HTTP-запросов, например ограничение методов API...
Список адресов phpMyAdmin популярных хостингов.
Список адресов NS серверов популярных хостингов.
Описание значений глобального массива $_SERVER с примерами.
Несколько методов как узнать время генерации страницы и затраченный объем памяти PHP скрипта.