Como obtener los registros DNS de un host utilizando la funcion dns_get_record de PHP

miércoles, abril 04, 2012 Publicado por: Oscar Meza


Este script muestra como obtener los registros DNS de un sitio web o una direccion IP utilizando la funcion dns_get_record de PHP

$hostname = "sitioweb_o_direccionip";

$result = dns_get_record($hostname);

/* La funcion dns_get_record() nos retorna un arreglo del obtenemos todos los registros
NS que nos servira para extraer los servidores DNS que responden por el sitio web o
direccion IP que estamos investigando donde solo obtendremos el nombre del servidor
y la direccion ip*/

foreach ($result as $line) {
 if($line['type'] == "A"){
  $server_ip = $line['ip'];
 }
}

echo "DNS Servers\n";

foreach ($result as $line) {
 if($line['type']=="NS")
 {
  $ip = gethostbyname($line['target']);
  if ($ip != $server_ip) {
   echo $line['target']."\t".$ip."\n";
  }
 }
}
/*Luego detallamos separadamente todos los registros linea por linea que fue respondida a nuestra
solicitud con la funcion dns_get_record()*/

echo "Answer records\n";

foreach($result as $record => $element) {
 foreach($element as $key => $value) {
  echo "$key:\t\t $value\n";
 }
 echo "\n";
}

}

Si por ejemplo el host del cual deseamos obtener los registros dns es "gmail.com" obtendriamos un resultado parecido al siguiente:

DNS Servers
ns3.google.com 216.239.36.10
ns4.google.com 216.239.38.10
ns2.google.com 216.239.34.10
ns1.google.com 216.239.32.10
Answer records
host:   gmail.com
type:   MX
pri:   20
target:   alt2.gmail-smtp-in.l.google.com
class:   IN
ttl:   3343

host:   gmail.com
type:   NS
target:   ns3.google.com
class:   IN
ttl:   62485

host:   gmail.com
type:   A
ip:   173.194.35.22
class:   IN
ttl:   35

host:   gmail.com
type:   MX
pri:   30
target:   alt3.gmail-smtp-in.l.google.com
class:   IN
ttl:   3343

host:   gmail.com
type:   MX
pri:   5
target:   gmail-smtp-in.l.google.com
class:   IN
ttl:   3343

host:   gmail.com
type:   NS
target:   ns4.google.com
class:   IN
ttl:   62485

host:   gmail.com
type:   NS
target:   ns2.google.com
class:   IN
ttl:   62485

host:   gmail.com
type:   MX
pri:   40
target:   alt4.gmail-smtp-in.l.google.com
class:   IN
ttl:   3343

host:   gmail.com
type:   NS
target:   ns1.google.com
class:   IN
ttl:   62485

host:   gmail.com
type:   A
ip:   173.194.35.21
class:   IN
ttl:   35

host:   gmail.com
type:   MX
pri:   10
target:   alt1.gmail-smtp-in.l.google.com
class:   IN
ttl:   3343


2 comentarios:

  1. Buena forma para sacar toda la información que da dns_get_record()
    Gracias!

    ResponderEliminar