Как представить неуказанный адрес IPv4? - PullRequest
0 голосов
/ 07 апреля 2019

Я работаю над распределенным приложением, написанным на Node.js, где публичный сервер время от времени получает сообщения от клиента по HTTP.При получении сообщения преобразуются в следующую структуру JSON:

{
  "message": {
    // The actual message's content
  },
  "metadata": {
    "client": {
      "ip": "192.168.0.1",
      "user": {
        "token": {
          "sub": "jane.doe@example.com"
        }
      }
    }
  }
}

Поскольку каждое соединение аутентифицируется с использованием OpenID Connect, я добавляю токен, отправленный клиентом, в раздел метаданных, а также IP-адресклиента, который отправил сообщение.Пока что это прекрасно работает.

Теперь один из непубличных серверов также может отправлять сообщения, но для этого не нужно использовать HTTP-соединение.Вместо этого он отправляет сообщение через очередь сообщений (в моем случае это RabbitMQ, но здесь это не актуально).Открытый сервер использует эту очередь в качестве второго входящего канала для сообщений.

Я бы хотел, чтобы сообщения имели одинаковую структуру, независимо от того, были ли они получены через HTTP от клиента или через очередь из внутреннегосервер.Внутренний сервер имеет токен, так что это не проблема.И, конечно, он мог бы использовать свой собственный IP-адрес в качестве источника, но это не имеет особого смысла.

Чего я хотел бы добиться, так это предоставить IP-адрес, который является формально правильным, но в основном говорит Я заполнитель, не принимайте меня за реальный .

Я видел, что в IPv6 есть адрес :: из блока адресов ::/128, которыйВикипедия звонит unspecified address.На самом деле, это очень похоже на то, что я ищу, но мне нужен не IPv6, а IPv4.

Теперь вопрос: что эквивалентно этому в IPv4?Это 0.0.0.0?Могу ли я использовать этот адрес для своих целей или это имеет семантически другое значение в сети?

1 Ответ

2 голосов
/ 07 апреля 2019

Я думаю, что для этой цели вполне нормально использовать адрес IPv4 0.0.0.0.

Резервирование IANA для блока 0.0.0.0/8 цитирует RFC 1122 с описанием «Этот хост в этой сети», которое хорошо подходит для использования в вашем приложении.

Кроме того, адрес 0.0.0.0 имеет различные аналогичные варианты использования , например, в качестве адреса источникав протоколе DHCP узлами, которые еще не имеют адреса, или в качестве подстановочного адреса для процесса сервера, что означает «запуск по всем локальным адресам источника IPv4».

A более подробный ответ можно найти на вопрос "В чем разница между 127.0.0.1 и 0.0.0.0?"на суперпользователя.

...