Node.js — модуль DNS

375

Від автора: Модуль dns Node.js використовується для пошуку фактичних DNS, а також для застосування функцій обробки імен базової операційної системи. Цей модуль надає асинхронну мережеву оболонку і може бути імпортований з допомогою наступного синтаксису.

var dns = require (dns)

Методи

dns.lookup(hostname[, options], callback) — Перетворює ім’я хоста (наприклад, google.com) в першу знайдену A (IPv4) або AAAA (IPv6) запис. Параметри можуть вказуватися, як об’єкт або як ціле число. Якщо параметри не зазначені, то дійсні IP-адреси v4 і v6. Якщо параметри є цілими числами, то це повинно бути 4 або 6.

dns.lookupService(address, port, callback) — Встановлює адресу і порт для імені хоста і служби, використовуючи getnameinfo.

dns.resolve(hostname[, rrtype], callback) — Перетворює ім’я хоста (наприклад, google.com) в масив типів записів, зазначених у rrtype.

dns.resolve4(hostname, callback) — Те ж, що і dns.resolve(), але тільки для запитів IPv4 (запис A). Адреси — це масив IP-адрес v4 (наприклад, [’74 .125.79.104 ‘, ’74 .125.79.105’, ’74 .125.79.106 ‘]).

dns.resolve6(hostname, callback) — Те ж, що і dns.resolve4(), тільки для запитів IPv6 (запит AAAA).

dns.resolveMx(hostname, callback) — Те ж, що і dns.resolve(),тільки для поштових запитів (MX).

dns.resolveTxt(hostname, callback) — Те ж, що і dns.resolve(),тільки для текстових запитів (записів TXT). адреса — це 2-й масив текстових записів, доступних для імені хоста (наприклад, [[‘v = spf1 i4: 0.0.0.0,’ ~ all]]). Кожен піддіапазон містить фрагменти TXT одного запису. В залежності від варіанту використання вони можуть бути об’єднані або оброблені окремо.

dns.resolveSrv(hostname, callback) — Те ж, що і dns.resolve(),тільки для записів служби (запис а SRV). адреса — це масив записів SRV, доступних для імені хоста. Властивості записів SRV — це пріоритет, вага, порт і ім’я (наприклад, [{‘priority’: 10, ‘weight’: 5, ‘port’: 21223, ‘name’: ‘service.example.com’}. ..]).

dns.resolveSoa(hostname, callback) — Те ж, що і dns.resolve(),тільки для початку запитів на авторизацію (запис SOA).

dns.resolveNs(hostname, callback) — Те ж, що і dns.resolve(),тільки для записів сервера імен (NS records). address — це масив записів сервера імен, доступних для імені хоста (наприклад, [‘ns1.example.com’, ‘ns2.example.com’]).

dns.resolveCname(hostname, callback) — Те ж, що і dns.resolve(),тільки для записів канонічних імен (записів CNAME). адреса — це масив записів канонічних імен, доступних для імені хоста (наприклад, [‘bar.example.com’]).

dns.reverse(ip callback) — Зворотне перетворення ip-адреси в масив імен хостів.

dns.getServers() — Повертає масив IP-адрес у вигляді рядків, які в даний час використовуються для обробки.

dns.setServers(servers) — Враховуючи масив IP-адрес у вигляді рядків, встановлює їх в якості серверів, які будуть використовуватися для обробки.

rrtypes

Нижче наведено список допустимих rrtypes, що використовуються методом dns.resolve()

A – IP-адреси V4, за замовчуванням

AAAA – IP-адреси V6

MX — поштові запису

TXT — текстові записи

SRV — запис а SRV

PTR — використовується для зворотного пошуку IP

NS — запис сервера імен

CNAME — запису канонічних імен

SOA — початок запису прав доступу

Коди помилок

Кожен запит DNS може повертати один з наступних кодів помилок:

dns.NODATA — DNS-сервер повернув відповідь без даних.

dns.FORMERR — запит заявок на сервер DNS був невірно визначений.

dns.SERVFAIL — DNS-сервер повернув загальну помилку.

dns.NOTFOUND — ім’я домену не знайдено.

dns.NOTIMP — DNS-сервер не виконує запитану операцію.

dns.REFUSED — DNS-сервер відхилив запит.

dns.BADQUERY — невірний запит DNS.

dns.BADNAME — некоректний формат імені хоста.

dns.BADFAMILY — непідтримувану сімейство адрес.

dns.BADRESP — відповідь на невірний DNS.

dns.CONNREFUSED — не вдалося зв’язатися з DNS-серверами.

dns.TIMEOUT — затримка при зверненні до DNS-серверів.

dns.EOF — кінець файлу.

dns.FILE — помилка читання файлу.

dns.NOMEM — недостатньо пам’яті.

dns.DESTRUCTION — канал буде видалено.

dns.BADSTR — невірна рядок.

dns.BADFLAGS — вказані неприпустимі прапори.

dns.NONAME — це ім’я хоста не є числовим.

dns.BADHINTS — вказані неприпустимі прапори підказок.

dns.NOTINITIALIZED — ініціалізація бібліотеки c-ares ще не виконана.

dns.LOADIPHLPAPI — помилка при завантаженні iphlpapi.dll.

dns.ADDRGETNETWORKPARAMS — не вдалося знайти функцію GetNetworkParams.

dns.CANCELLED — DNS-запит анульований.

Приклад

Створіть файл з ім’ям js main.js з таким кодом:

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

Тепер запустіть main.js:

$ node main.js

В результаті ви повинні отримати наступне.

[/JS]
address: 173.194.46.83
reverse for 173.194.46.83: [“ord08s11-in-f19.1e100.net”]
[JS]