dns_get_record

(PHP 5)

dns_get_record --  Recuperar Registros de Recursos DNS asociados con un nombre de servidor huésped

Descripción

array dns_get_record ( string nombre_host [, int tipo [, array &authns, array &addtl]] )

Nota: Esta función no está implementada en plataformas Windows, ni funciona (actualmente) en systemas *BSD. Pruebe con la clase PEAR Net_DNS.

Esta función devuelve una matriz de matrices asociativas. Cada matriz asociativa contiene por lo menos las siguientes claves:

Tabla 1. Atributos DNS básicos

AtributoSignificado
host El registro en el espacio de nombres DNS al que hacen referencia el resto de datos asociados.
class dns_get_record() devuelve únicamente registros de clase Internet y como tal, éste parámetro siempre devolverá IN.
type Cadena que contiene el tipo de registro. Otros atributos adicionales serán contenidos también en la matriz resultante dependiendo del valor de type. Vea la tabla más adelante.
ttl Valor Time To Live restante para este registro. Este no será igual al ttl original del registro, sino que será igual al ttl original menos cualquiera que haya sido la longitud de tiempo transcurrido desde que el servidor de nombres oficial fuera consultado.

nombre_host debe ser un nombre de servidor huésped DNS válido, como "www.example.com". Pueden generarse consultas revertidas usando la notación in-addr.arpa, pero gethostbyaddr() es más apropiada para la mayoría de consultas revertidas.

Por defecto, dns_get_record() buscará por cualquier registro de recurso asociado con nombre_host. Para limitar la consulta, especifique el parámetro opcional tipo. tipo puede ser cualquiera de los siguientes: DNS_A, DNS_CNAME, DNS_HINFO, DNS_MX, DNS_NS, DNS_PTR, DNS_SOA, DNS_TXT, DNS_AAAA, DNS_SRV, DNS_NAPTR, DNS_A6, DNS_ALL o DNS_ANY. El valor predeterminado es DNS_ANY.

Nota: Debido a excentricidades en el rendimiento de libresolv entre plataformas, DNS_ANY no siempre devolverá todos los registros, la alternativa más lenta DNS_ALL recolectará todos los registros de forma más confiable.

Los opcionales tercer y cuarto argumento de esta función, authns y addtl son pasados por referencia y, si son usados, serán llenados con Registros de Recurso para los Servidores de Nombres Oficiales, y cualquier Registro Adicional respectivamente. Vea el ejemplo más adelante.

Tabla 2. Otras claves en las matrices asociativas, dependientes de 'type'

TipoColumnas Extra
A ip: Una dirección IPv4 en notación decimal con puntos.
MX pri: Prioridad del gestor de correo. Números bás bajos indican mayor prioridad. target: FQDN del gestor de correo. Vea también dns_get_mx().
CNAME target: FQDN de la ubicación en el espacio de nombres DNS de la cual es alias el registro.
NS target: FQDN del servidor de nombres que es la autoridad para este nombre de host.
PTR target: Ubicación dentro del espacio de nombres DNS a la que apunta este registro.
TXT txt: Cadena de datos arbitraria asociada con este registro.
HINFO cpu: Número IANA que indica el CPU de la máquina referenciada por este registro. os: Número IANA que indica el Sistema Operativo en la máquina referenciada por este registro. Vea los Nombres de Sistemas Operativos de IANA para consultar el significado de estos valores.
SOA mname: FQDN de la máquina desde donde se originaron los registros de recurso. rname: Dirección de correo electrónico del contacto administrativo para este dominio. serial: # serial de esta revisión del dominio solicitado. refresh: Intervalo de actualización (segundos) que deben usar los servidores de nombre secundarios cuando actualicen las copias remotas de este dominio. retry: Periodo de tiempo (segundos) para esperar después de una actualización fallida antes de hacer un segundo intento. expire: Periodo máximo de tiempo (segundos) que un servidor DNS secundario debe conservar copias remotas de los datos de zona sin una actualización exitosa antes de descartarlos. minimum-ttl: Periodo mínimo de tiempo (segundos) en el que un cliente puede continuar usando una resolución DNS antes de que deba solicitar una nueva resolución del servidor. Puede ser sobrescrito por registros de recurso individuales.
AAAA ipv6: Dirección IPv6
A6(PHP >= 5.1.0) masklen: Longitud (en bits) para heredar del destino especificado por chain. ipv6: Dirección para mezclar este registro específico con chain. chain: Registro padre a mezclar con los datos de ipv6.
SRV pri: (Prioridad) las prioridades más bajas deben ser usadas primero. weight: Rangos para pesar cuál de los destinos comunmente con prioridades debe ser elegido al azar. target y port: nombre de servidor huésped y puerto en dondo puede encontrarse el servicio solicitado. Para más información, vea: RFC 2782
NAPTR order y pref: Equivalente a pri y weight descritos anteriormente. flags, services, regex, y replacement: Parámetros, como se definen por RFC 2915.

Nota: Debido a estándares DNS, las direcciones de correo electrónico son dadas en formato usuario.host (por ejemplo: hostmaster.example.com en lugar de hostmaster@example.com), asegúrese de chequear este valor y modificarlo si es necesario antes de usarlo con funciones como mail().

Ejemplo 1. Uso de dns_get_record()

<?php
$resultado
= dns_get_record("php.net");
print_r($resultado);
?>

Produce una salida similar a la siguiente:

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
        )

)

Ya que es muy común desear la dirección IP de un servidor de correo una vez el registro MX ha sido resuelto, dns_get_record() también devuelve una matriz en addtl la cual contiene registros asociados. authns es devuelto también, conteniendo una lista de servidores de nombre oficiales.

Ejemplo 2. Uso de dns_get_record() y DNS_ANY

<?php

/* Solicitar "cualquier" registro para php.net, y crear las matrices
   $authns y $addtl conteniendo una lista de servidores de nombre y
   cualquier registro adicional que vaya con ellos */

$resultado = dns_get_record("php.net", DNS_ANY, $authns, $addtl);
echo
"Resultado = ";
print_r($resultado);
echo
"Auth NS = ";
print_r($authns);
echo
"Adicional = ";
print_r($addtl);
?>

Produce una salida similar a la siguiente:

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
        )

)

Vea también dns_get_mx(), y dns_check_record()

Hosting by: hurra.com
Generated: 2007-01-26 18:00:57