(PHP 5, PHP 7, PHP 8)
dns_get_record — Lee los datos DNS asociados a un host
$hostname
,$type
= DNS_ANY
,&$authoritative_name_servers
= null
,&$additional_records
= null
,$raw
= false
Lee los datos DNS asociados al host hostname
.
hostname
hostname
debe ser un nombre de host DNS válido, como
www.example.com
. Las resoluciones inversas pueden
realizarse con la notación in-addr.arpa
, pero la función
gethostbyaddr() es más eficiente para realizar resoluciones inversas.
Nota:
En términos de estándares DNS, las direcciones de correo electrónico se proporcionan en el formato
usuario.host
(por ejemplo:webmaster.example.com
en lugar del formatowebmaster@example.com
). No se debe olvidar verificar esta dirección y modificarla si es necesario antes de pasarla a la función mail().
type
Por omisión, dns_get_record() buscará todos los
recursos asociados a hostname
.
Para limitar la consulta, se debe utilizar una de las constantes
DNS_*
.
authoritative_name_servers
Pasado por referencia, y, si se proporciona, recibirá los registros de recursos para los Authoritative Name Servers.
additional_records
Pasado por referencia, y, si se proporciona, recibirá todos los registros adicionales.
raw
El type
será interpretado como un ID de tipo DNS sin tratar
(no se pueden utilizar las constantes DNS_*
).
El valor de retorno contendrá una clave data
,
que debe ser analizada manualmente.
dns_get_record() retorna un array de arrays
asociativos, o false
en caso de error.
Cada array contiene como mínimo los índices siguientes:
Atributo | Significado |
---|---|
host | El registro del espacio de nombres DNS que es descrito por los otros datos. |
class |
dns_get_record() solo retorna la clase de registro
Internet y, como tal, este índice siempre valdrá IN .
|
type | String que contiene el tipo de registro. Los atributos adicionales también estarán disponibles en el array según el valor de este tipo. Consulte la tabla a continuación. |
ttl |
"Time To Live" : duración antes de la expiración del registro.
Este valor es diferente de la duración original antes de la expiración,
sino que es este valor menos la duración desde la última consulta
al servidor DNS responsable.
|
Tipo | Valor adicional |
---|---|
A |
ip : una dirección IPv4, en formato numérico.
|
MX |
pri : prioridad del servidor de correo.
Los números bajos indican una prioridad alta.
target : FQDN del servidor de correo.
Ver también dns_get_mx().
|
CNAME |
target : FQDN del nombre del espacio DNS que sirve
como alias para este registro.
|
NS |
target : FQDN del nombre del servidor que es responsable
de este nombre de dominio.
|
PTR |
target : nombre de dominio al que apunta este registro.
|
TXT |
txt : string asociado arbitrariamente
a este registro.
|
HINFO |
cpu : número IANA que designa el procesador de la máquina
referenciada por este registro.
os : número IANA que designa el sistema operativo
de la máquina referenciada por este registro.
Ver » Operating System Names
para conocer el significado de estos valores.
|
CAA |
flags : Un campo de bits de un octeto: actualmente solo el bit 0 está definido,
significando 'critical' (crítico); los otros bits están reservados y deben ser ignorados.
tag : El nombre del tag CAA (string alfanumérico ASCII).
value : El valor del tag CAA (string binario, puede utilizar subformatos).
Para más información ver: » RFC 6844
|
SOA |
mname : FQDN de la fuente de este registro.
rname : dirección de correo electrónico del contacto administrativo de
este dominio.
serial : número de serie del nombre de dominio.
refresh : intervalo de actualización (en segundos)
que los servidores de nombres secundarios deben utilizar para almacenar en caché este nombre de dominio.
retry : duración (en segundos) de espera después de una actualización
fallida, antes de hacer un segundo intento.
expire : duración máxima (en segundos) de conservación
de una copia de los datos de zona sin poder hacer una actualización.
minimum-ttl : duración mínima (en segundos) durante la cual un
cliente conserva datos de zona antes de que envíe una nueva
consulta. Esta configuración puede ser anulada por otros registros.
|
AAAA |
ipv6 : dirección IPv6
|
A6 |
masklen : longitud (en octetos) a heredar desde
el objetivo especificado por chain .
ipv6 : dirección para que este registro específico se fusione
con chain .
chain : el registro padre a fusionar con los datos
ipv6 .
|
SRV |
pri : (prioridad) las prioridades más bajas deben
ser utilizadas primero.
weight : clasificación para elegir aleatoriamente entre los
servidores targets .
target y port : nombre de host y
puerto donde el servicio está disponible.
Para más información, ver: » RFC 2782
|
NAPTR |
order y pref : equivalente a
pri y weight arriba.
flags , services , regex ,
y replacement : parámetros como se definen
en la » RFC 2915.
|
Versión | Descripción |
---|---|
7.0.16, 7.1.2 | Se agregó soporte para registros de tipo CAA. |
Ejemplo #1 Ejemplo con dns_get_record()
<?php
$result = dns_get_record("php.net");
print_r($result);
?>
El resultado del ejemplo sería algo similar a:
Array ( [0] => Array ( [host] => php.net [type] => MX [pri] => 5 [target] => pair2.php.net [class] => IN [ttl] => 6765 ) [1] => Array ( [host] => php.net [type] => A [ip] => 64.246.30.37 [class] => IN [ttl] => 8125 ) )
Ejemplo #2 Ejemplo con dns_get_record() y DNS_ANY
Como es muy común buscar la IP de un servidor,
una vez que el campo MX ha sido resuelto, dns_get_record()
retornará también un array en el parámetro additional_records
que contendrá los registros asociados. authoritative_name_servers
también es retornado conteniendo una lista de los servidores de autoridad.
<?php
/* Solicita todos ("ANY") los registros para php.net,
luego crea los arrays $authns y $addtl
conteniendo una lista de nombres de servidores, y todos
los registros que van con ellos
*/
$result = dns_get_record("php.net", DNS_ANY, $authns, $addtl);
echo "Result = ";
print_r($result);
echo "Auth NS = ";
print_r($authns);
echo "Additional = ";
print_r($addtl);
?>
El resultado del ejemplo sería algo similar a:
Result = Array ( [0] => Array ( [host] => php.net [type] => MX [pri] => 5 [target] => pair2.php.net [class] => IN [ttl] => 6765 ) [1] => Array ( [host] => php.net [type] => A [ip] => 64.246.30.37 [class] => IN [ttl] => 8125 ) ) Auth NS = Array ( [0] => Array ( [host] => php.net [type] => NS [target] => remote1.easydns.com [class] => IN [ttl] => 10722 ) [1] => Array ( [host] => php.net [type] => NS [target] => remote2.easydns.com [class] => IN [ttl] => 10722 ) [2] => Array ( [host] => php.net [type] => NS [target] => ns1.easydns.com [class] => IN [ttl] => 10722 ) [3] => Array ( [host] => php.net [type] => NS [target] => ns2.easydns.com [class] => IN [ttl] => 10722 ) ) Additional = Array ( [0] => Array ( [host] => pair2.php.net [type] => A [ip] => 216.92.131.5 [class] => IN [ttl] => 6766 ) [1] => Array ( [host] => remote1.easydns.com [type] => A [ip] => 64.39.29.212 [class] => IN [ttl] => 100384 ) [2] => Array ( [host] => remote2.easydns.com [type] => A [ip] => 212.100.224.80 [class] => IN [ttl] => 81241 ) [3] => Array ( [host] => ns1.easydns.com [type] => A [ip] => 216.220.40.243 [class] => IN [ttl] => 81241 ) [4] => Array ( [host] => ns2.easydns.com [type] => A [ip] => 216.220.40.244 [class] => IN [ttl] => 81241 ) )