Node.js - Modulo DNS

Node.js dnsviene utilizzato per eseguire ricerche DNS effettive e per utilizzare le funzionalità di risoluzione dei nomi del sistema operativo sottostante. Questo modulo fornisce un wrapper di rete asincrono e può essere importato utilizzando la seguente sintassi.

var dns = require("dns")

Metodi

Sr.No. Metodo e descrizione
1

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

Risolve un nome host (ad es. "Google.com") nel primo record A (IPv4) o AAAA (IPv6) trovato. le opzioni possono essere un oggetto o un numero intero. Se le opzioni non vengono fornite, gli indirizzi IP v4 e v6 sono entrambi validi. Se options è un numero intero, deve essere 4 o 6.

2

dns.lookupService(address, port, callback)

Risolve l'indirizzo e la porta specificati in un nome host e un servizio utilizzando getnameinfo.

3

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

Risolve un nome host (ad es. "Google.com") in un array dei tipi di record specificati da rrtype.

4

dns.resolve4(hostname, callback)

Lo stesso di dns.resolve (), ma solo per le query IPv4 (record A). indirizzi è un array di indirizzi IPv4 (ad esempio ['74 .125.79.104 ', '74 .125.79.105', '74 .125.79.106 ']).

5

dns.resolve6(hostname, callback)

Lo stesso di dns.resolve4 () ad eccezione delle query IPv6 (una query AAAA).

6

dns.resolveMx(hostname, callback)

Uguale a dns.resolve (), ma solo per le query di scambio di posta (record MX).

7

dns.resolveTxt(hostname, callback)

Lo stesso di dns.resolve (), ma solo per le query di testo (record TXT). address è un array 2-d dei record di testo disponibili per hostname (ad esempio, [['v = spf1 ip4: 0.0.0.0', '~ all']]). Ogni sottoarray contiene blocchi TXT di un record. A seconda del caso d'uso, potrebbero essere uniti o trattati separatamente.

8

dns.resolveSrv(hostname, callback)

Lo stesso di dns.resolve (), ma solo per i record di servizio (record SRV). indirizzi è un array dei record SRV disponibili per il nome host. Le proprietà dei record SRV sono priorità, peso, porta e nome (ad esempio, [{'priorità': 10, 'peso': 5, 'porta': 21223, 'nome': 'servizio.esempio.com'},. ..]).

9

dns.resolveSoa(hostname, callback)

Uguale a dns.resolve (), ma solo per le query di record di autorità (record SOA).

10

dns.resolveNs(hostname, callback)

Lo stesso di dns.resolve (), ma solo per i record del server dei nomi (record NS). indirizzi è un array dei record del server dei nomi disponibili per il nome host (ad esempio, ['ns1.example.com', 'ns2.example.com']).

11

dns.resolveCname(hostname, callback)

Lo stesso di dns.resolve (), ma solo per i record di nome canonico (record CNAME). address è un array di record di nomi canonici disponibili per hostname (ad esempio, ['bar.example.com']).

12

dns.reverse(ip, callback)

Reverse risolve un indirizzo IP in un array di nomi host.

13

dns.getServers()

Restituisce un array di indirizzi IP come stringhe attualmente utilizzate per la risoluzione.

14

dns.setServers(servers)

Dato un array di indirizzi IP come stringhe, impostali come server da utilizzare per la risoluzione.

rrtypes

Di seguito è riportato l'elenco dei tipi di rr validi utilizzati dal metodo dns.resolve () -

  • A - Indirizzi IPV4, predefiniti

  • AAAA - Indirizzi IPV6

  • MX - record di scambio di posta

  • TXT - record di testo

  • SRV - Record SRV

  • PTR - utilizzato per le ricerche IP inverse

  • NS - record del server dei nomi

  • CNAME - record di nomi canonici

  • SOA - inizio dell'authority record

Codici di errore

Ogni query DNS può restituire uno dei seguenti codici di errore:

  • dns.NODATA - Il server DNS ha restituito la risposta senza dati.

  • dns.FORMERR - La query delle attestazioni del server DNS non era formattata correttamente.

  • dns.SERVFAIL - Il server DNS ha restituito un errore generale.

  • dns.NOTFOUND - Nome di dominio non trovato.

  • dns.NOTIMP - Il server DNS non implementa l'operazione richiesta.

  • dns.REFUSED - Il server DNS ha rifiutato la query.

  • dns.BADQUERY - Query DNS formattata male.

  • dns.BADNAME - Nome host formattato male.

  • dns.BADFAMILY - Famiglia di indirizzi non supportata.

  • dns.BADRESP - Risposta DNS non formattata.

  • dns.CONNREFUSED - Impossibile contattare i server DNS.

  • dns.TIMEOUT - Timeout durante il contatto con i server DNS.

  • dns.EOF - Fine del file.

  • dns.FILE - Errore durante la lettura del file.

  • dns.NOMEM - Senza memoria.

  • dns.DESTRUCTION - Il canale viene distrutto.

  • dns.BADSTR - Stringa formattata male.

  • dns.BADFLAGS - Flag illegali specificati.

  • dns.NONAME - Il nome host fornito non è numerico.

  • dns.BADHINTS - Flag di suggerimenti illegali specificati.

  • dns.NOTINITIALIZED - Inizializzazione della libreria c-ares non ancora eseguita.

  • dns.LOADIPHLPAPI - Errore durante il caricamento di iphlpapi.dll.

  • dns.ADDRGETNETWORKPARAMS - Impossibile trovare la funzione GetNetworkParams.

  • dns.CANCELLED - Richiesta DNS annullata.

Esempio

Crea un file js denominato main.js con il codice seguente:

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));
   });  
});

Ora esegui main.js per vedere il risultato -

$ node main.js

Verifica l'output.

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