Как сделать так, чтобы HTTP-запросы от разных клиентов появлялись с одного и того же IP-адреса? - PullRequest
0 голосов
/ 27 апреля 2018

Я использую сторонний API, который делает недействительным токен OAuth, если запросы поступали с разных IP-адресов. Это вызывает проблемы, потому что служба работает на нескольких хостах.

В идеале я хочу, чтобы только один запрос к этому конкретному API направлялся через один IP.

Я думал о настройке прокси-сервера, но меня беспокоит, что я не смогу масштабировать этот прокси за пределами 1 машины.

Есть предложения?

1 Ответ

0 голосов
/ 27 апреля 2018

Идеальным вариантом здесь, конечно, было бы получить токен OAuth для каждой машины. (Или, что еще лучше, чтобы служба позволяла вам делиться токеном по IP-адресам.) Но я полагаю, что по какой-то причине вы не можете этого сделать.

В этом случае вы, вероятно, делаете здесь нужен прокси-сервер.

Возможность перенаправлять только запросы к этому конкретному API через этот прокси очень проста. Установите явный прокси, а не прозрачный, и укажите этот явный прокси для этих конкретных методов.

Поскольку вы не показали нам или даже не описали свой код, я не могу показать вам, как это сделать с любой библиотекой, которую вы используете, но вот как это сделать с requests, и это не намного сложнее с stdlib urllib или большинством других сторонних библиотек.

Но для полноты картины: совершенно невозможно сделать так, чтобы отдельные машины имели одинаковый IP-адрес, если все ваши машины находятся за маршрутизатором, который находится под вашим контролем. Фактически, это именно то, что вы получаете с обычной домашней DSL / кабельной настройкой через NAT : у каждой машины есть свой собственный только внутренний адрес, но все они имеют один публичный адрес. Но это, вероятно, не то, что вы хотите. С одной стороны, если ваши машины на самом деле являются узлами GCP, вы не управляете маршрутизатором и, возможно, даже не сможете контролировать, находятся ли они в одной сети (в случае, если вы думали запустить программный маршрутизатор для передачи по каналу). их все через). Кроме того, NAT вызывает все виды проблем для серверов. А так как ваше беспокойство вызывает масштабирование, использование NAT - это кошмар, когда вам нужно масштабироваться за пределы одной подсети. И даже более того, если эти экземпляры предназначены для использования в качестве серверов (что весьма вероятно, если вы запускаете их на GCP). И, наконец, чтобы использовать NAT для общения только с одним сервисом, вам нужны либо очень сложные таблицы маршрутизации, либо дополнительный сетевой интерфейс для каждой машины (который вы можете установить за другим маршрутизатором). Поэтому я сомневаюсь, что это то, что вы на самом деле хотите здесь.

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