Как представить неуказанный адрес IPv4?

Я работаю над распределенным приложением, написанным на 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 ответ

Решение

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

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

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

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

Другие вопросы по тегам