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"]