Модуль node:dns выполняет разрешение имён: например, поиск IP-адресов по имени хоста.
Несмотря на название системы доменных имён (DNS), для поиска не всегда используется протокол DNS. [dns.lookup()][dns.lookup()] опирается на средства ОС для разрешения имён. Сетевой обмен может и не понадобиться. Чтобы вести себя при разрешении имён так же, как другие приложения в системе, используйте [dns.lookup()][dns.lookup()].
Остальные функции модуля node:dns подключаются к реальному DNS-серверу для разрешения имён. Они всегда используют сеть для DNS-запросов. Набор конфигурационных файлов у них другой, чем у [dns.lookup()][dns.lookup()] (например, не учитывается /etc/hosts). Используйте их, когда нужны именно DNS-запросы, минуя прочие механизмы разрешения имён в ОС.
1 2 3 4 5 6 7 8 910111213141516
importdnsfrom'node:dns';dns.resolve4('archive.org',(err,addresses)=>{if(err)throwerr;console.log(`addresses: ${JSON.stringify(addresses)}`);addresses.forEach((a)=>{dns.reverse(a,(err,hostnames)=>{if(err){throwerr;}console.log(`reverse for ${a}: ${JSON.stringify(hostnames)}`);});});});
1 2 3 4 5 6 7 8 910111213141516
constdns=require('node:dns');dns.resolve4('archive.org',(err,addresses)=>{if(err)throwerr;console.log(`addresses: ${JSON.stringify(addresses)}`);addresses.forEach((a)=>{dns.reverse(a,(err,hostnames)=>{if(err){throwerr;}console.log(`reverse for ${a}: ${JSON.stringify(hostnames)}`);});});});
При создании резолвера используются настройки серверов по умолчанию. Список серверов, заданный через [resolver.setServers()][dns.setServers()] для одного резолвера, не влияет на другие:
12345678
import{Resolver}from'node:dns';constresolver=newResolver();resolver.setServers(['4.4.4.4']);// Запрос пойдёт на 4.4.4.4, независимо от глобальных настроекresolver.resolve4('example.org',(err,addresses)=>{// ...});
12345678
const{Resolver}=require('node:dns');constresolver=newResolver();resolver.setServers(['4.4.4.4']);// Запрос пойдёт на 4.4.4.4, независимо от глобальных настроекresolver.resolve4('example.org',(err,addresses)=>{// ...});
Для резолвера доступны те же методы, что и в модуле node:dns: