частный и публичный ip с использованием AWS api gateway + lambda + Nodejs - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь получить частные IP-адреса пользователей и публичные IP-адреса в среде AWS.Исходя из этого ответа (https://stackoverflow.com/a/46021715/4283738) должен быть заголовок X-Forwarded-For, отдельные ips, а также с форума (https://forums.aws.amazon.com/thread.jspa?threadID=200198)

Но когда я развернул свой API через APIGateway + lambda + nodejs v8. Я утешил JSON для переменных событий и контекста для аргументов функции-обработчика nodejs для отладки (https://y0gh8upq9d.execute -api.ap-south-1.amazonaws.com / prod ) Я не получаю приватный ips.

Лямбда-функция

const AWS = require('aws-sdk');
exports.handler = function(event, context, callback){
    callback(null, {
        "statusCode": 200,
        "body": JSON.stringify({event,context})
    });
}

Сведения о шлюзе API

GET - Запрос на интеграцию

Тип интеграции -- Лямбда-функция

Использование интеграции лямбда-прокси - True

API функции: https://y0gh8upq9d.execute -api.ap-south-1.amazonaws.com / prod

Ответы [ 3 ]

0 голосов
/ 18 декабря 2018

В заголовке «X-Forwarded-For» отображается публичный IP-адрес пользователя.

Это все, что вы получаете.

Внутренние IP-адреса не отображаются.

Только тот "публичный ip", который указан в заголовке.

0 голосов
/ 18 декабря 2018

Случай 1: Вы не можете получить частный IP-адрес пользователя по соображениям безопасности (если он настроен пользователем, это выполняется с помощью NAT или PAT (преобразование сетевых адресов или преобразование адресов портов за экраном. NAT добавитэтот ip в его таблице и отправьте запрос вперед с публичным идентификатором или может сказать router-id).

Случай 2: Если здесь ваш частный ip означает, что если несколько пользователей используют одну и ту же общедоступную сеть (WIFI)и т.д.). Опять же, вы можете определить два IP-адреса, один из которых является общедоступным, который является общим для всех, но внутри общедоступной сети у них есть другой IP-адрес, который уникален в этой общедоступной сети.

Например: скажем, есть WIFI спубличный IP (1.1.1.1). Он имеет двух пользователей A и B. Примечательно, поскольку они совместно используют один и тот же WIFI, поэтому у маршрутизатора будет только один IP (открытый и общий для всех), но внутри этого маршрутизатора A и B будут иметьразличные IP-адреса, такие как 192.1.1.1 и 192.1.1.2, которые можно назвать частными.

В обоих случаях вы получите только публичный IP-адресИон 0 в заголовке X-Forwarded-For).

Вы можете получить заголовок X-Forwarded-For внутри event.headers.multiValueHeaders.

Если выможет получить доступ как к частному, так и к общему IP-адресу?

Для доступа к частной подсети AWS VPC также необходимо использовать NAT, и клиент никогда не узнает фактический IP-адрес из соображений безопасности.Прошу вас еще раз пересмотреть ваши требования.

0 голосов
/ 10 декабря 2018

Не знаю, что заставляет вас застревать здесь, поправьте меня, если я ошибаюсь.From Wiki :

Поле заголовка HTTP X-Forwarded-For (XFF) является распространенным методом для определения исходного IP-адреса клиента, подключающегося к веб-серверу черезHTTP прокси или балансировщик нагрузки.

Я установил X-Forwarded-For в заголовке и тест с почтальоном: https://imgur.com/a/8QZEdyH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...