Ошибка - getHostByAddr ENOTFOUND :: ffff: 18.234.32.226 - PullRequest
0 голосов
/ 03 июня 2019

Когда я использую эту утилиту с nodejs: https://nodejs.org/api/dns.html#dns_dns_reverse_ip_callback

примерно так:

  const {remoteAddress, remotePort} = req.connection; 

  dns.reverse(remoteAddress, (err, hostnames) => {

    if(err){
      console.error(err.message);
    }

  });

Я получаю эту ошибку -

getHostByAddr ENOTFOUND ::ffff: 18.234.32.226

что такое ffff в начале адреса / ip?Я предполагаю, что должен избавиться от этого, прежде чем перейти к поисковому вызову dns.reverse?

1 Ответ

0 голосов
/ 04 июня 2019

::ffff:18.234.32.226 - это адрес IPv4 (18.234.32.226), сопоставленный с адресом IPv6, который вы обнаруживаете из-за использования :.

. Это распространенный случай, который происходит в системах, настроенных напредпочитайте IPv6 вместо IPv4 (что-то, что вы можете настроить в системах Unix с файлом /etc/gai.conf).

Это объясняется в https://tools.ietf.org/html/rfc3493 разделе 3.7:

APIтакже обеспечивает другой тип совместимости: способность
для приложений IPv6 взаимодействовать с приложениями IPv4.Эта функция
использует формат IPv4-сопоставленного адреса IPv6, определенный в спецификации архитектуры адресации IPv6
[2].Этот формат адреса
позволяет представить адрес IPv4 узла IPv4 в виде адреса IPv6
.Адрес IPv4 кодируется в младшие 32 бита
адреса IPv6, а 96 старших битов содержат фиксированный префикс
0: 0: 0: 0: 0: FFFF.IPv4-сопоставленные адреса записываются следующим образом:

::FFFF:<IPv4-address>

Вам необходимо либо настроить систему так, чтобы адреса IPv4 не отображались как адреса IPv6, либо использовать библиотеку, которая знает, как обрабатывать эти IP-адреса (которые полностью законны).Или, в худшем случае, действительно удалите ::ffff: в начале.

...