Node.js - Módulo DNS

Node.js dnsO módulo é usado para fazer pesquisas DNS reais, bem como para usar as funcionalidades de resolução de nomes do sistema operacional subjacente. Este módulo fornece um wrapper de rede assíncrono e pode ser importado usando a seguinte sintaxe.

var dns = require("dns")

Métodos

Sr. Não. Método e Descrição
1

dns.lookup(hostname[, options], callback)

Resolve um nome de host (por exemplo, 'google.com') no primeiro registro A (IPv4) ou AAAA (IPv6) encontrado. as opções podem ser um objeto ou inteiro. Se as opções não forem fornecidas, os endereços IP v4 e v6 são válidos. Se options for um número inteiro, deve ser 4 ou 6.

2

dns.lookupService(address, port, callback)

Resolve o endereço e a porta fornecidos em um nome de host e serviço usando getnameinfo.

3

dns.resolve(hostname[, rrtype], callback)

Resolve um nome de host (por exemplo, 'google.com') em uma matriz dos tipos de registro especificados por rrtype.

4

dns.resolve4(hostname, callback)

O mesmo que dns.resolve (), mas apenas para consultas IPv4 (registros A). endereços é uma matriz de endereços IPv4 (por exemplo, ['74 .125.79.104 ', '74 .125.79.105', '74 .125.79.106 ']).

5

dns.resolve6(hostname, callback)

O mesmo que dns.resolve4 (), exceto para consultas IPv6 (uma consulta AAAA).

6

dns.resolveMx(hostname, callback)

O mesmo que dns.resolve (), mas apenas para consultas de troca de correio (registros MX).

7

dns.resolveTxt(hostname, callback)

O mesmo que dns.resolve (), mas apenas para consultas de texto (registros TXT). endereços é uma matriz 2-d dos registros de texto disponíveis para o nome do host (por exemplo, [['v = spf1 ip4: 0.0.0.0', '~ todos']]). Cada submatriz contém blocos TXT de um registro. Dependendo do caso de uso, eles podem ser unidos ou tratados separadamente.

8

dns.resolveSrv(hostname, callback)

O mesmo que dns.resolve (), mas apenas para registros de serviço (registros SRV). endereços é uma matriz dos registros SRV disponíveis para o nome do host. As propriedades dos registros SRV são prioridade, peso, porta e nome (por exemplo, [{'prioridade': 10, 'peso': 5, 'porta': 21223, 'nome': 'serviço.exemplo.com'},. ..]).

9

dns.resolveSoa(hostname, callback)

O mesmo que dns.resolve (), mas apenas para consultas de registro de autoridade (registro SOA).

10

dns.resolveNs(hostname, callback)

O mesmo que dns.resolve (), mas apenas para registros do servidor de nomes (registros NS). endereços é uma matriz dos registros do servidor de nomes disponíveis para o nome do host (por exemplo, ['ns1.example.com', 'ns2.example.com']).

11

dns.resolveCname(hostname, callback)

O mesmo que dns.resolve (), mas apenas para registros de nomes canônicos (registros CNAME). endereços é uma matriz dos registros de nomes canônicos disponíveis para o nome do host (por exemplo, ['bar.example.com']).

12

dns.reverse(ip, callback)

Reverse resolve um endereço IP para uma série de nomes de host.

13

dns.getServers()

Retorna uma matriz de endereços IP como strings que estão sendo usadas para resolução.

14

dns.setServers(servers)

Dada uma matriz de endereços IP como strings, defina-os como os servidores a serem usados ​​para resolução.

rrtypes

A seguir está a lista de rrtypes válidos usados ​​pelo método dns.resolve () -

  • A - endereços IPV4, padrão

  • AAAA - endereços IPV6

  • MX - registros de troca de correio

  • TXT - registros de texto

  • SRV - registros SRV

  • PTR - usado para pesquisas de IP reverso

  • NS - registros do servidor de nomes

  • CNAME - registros de nomes canônicos

  • SOA - início do registro de autoridade

Códigos de Erro

Cada consulta DNS pode retornar um dos seguintes códigos de erro -

  • dns.NODATA - O servidor DNS retornou uma resposta sem dados.

  • dns.FORMERR - A consulta de declarações do servidor DNS foi formatada incorretamente.

  • dns.SERVFAIL - O servidor DNS retornou uma falha geral.

  • dns.NOTFOUND - Nome de domínio não encontrado.

  • dns.NOTIMP - O servidor DNS não implementa a operação solicitada.

  • dns.REFUSED - O servidor DNS recusou a consulta.

  • dns.BADQUERY - Consulta DNS formatada incorretamente.

  • dns.BADNAME - Nome de host mal formatado.

  • dns.BADFAMILY - Família de endereços não suportados.

  • dns.BADRESP - Resposta DNS mal formatada.

  • dns.CONNREFUSED - Não foi possível contatar os servidores DNS.

  • dns.TIMEOUT - Tempo limite ao entrar em contato com os servidores DNS.

  • dns.EOF - Fim do arquivo.

  • dns.FILE - Erro ao ler o arquivo.

  • dns.NOMEM - Sem memória.

  • dns.DESTRUCTION - O canal está sendo destruído.

  • dns.BADSTR - String formatada incorretamente.

  • dns.BADFLAGS - Sinalizadores ilegais especificados.

  • dns.NONAME - O nome de host fornecido não é numérico.

  • dns.BADHINTS - Sinalizadores de dicas ilegais especificados.

  • dns.NOTINITIALIZED - a inicialização da biblioteca c-ares ainda não foi realizada.

  • dns.LOADIPHLPAPI - Erro ao carregar iphlpapi.dll.

  • dns.ADDRGETNETWORKPARAMS - Não foi possível encontrar a função GetNetworkParams.

  • dns.CANCELLED - Consulta DNS cancelada.

Exemplo

Crie um arquivo js chamado main.js com o seguinte código -

var dns = require('dns');

dns.lookup('www.google.com', function onLookup(err, address, family) {
   console.log('address:', address);
   dns.reverse(address, function (err, hostnames) {
      if (err) {
         console.log(err.stack);
      }

      console.log('reverse for ' + address + ': ' + JSON.stringify(hostnames));
   });  
});

Agora execute o main.js para ver o resultado -

$ node main.js

Verifique a saída.

address: 173.194.46.83
reverse for 173.194.46.83: ["ord08s11-in-f19.1e100.net"]