чт, 23 мар. 2023 г. в 14:01, Eugene Berdnikov <b...@protva.ru>:
> On Thu, Mar 23, 2023 at 01:26:04PM +0400, Maksim Dmitrichenko wrote: > > Хочется поиметь такой HTTP Proxy сервер, который: > > а) будет балансировать соединения из внутренней сети в Интернет по > > определенному набору внешних айпишников (к каждому из которых на хосте > > прокси имеется, например, VPN-соединение, то есть айпишники не на > > интерфейсах хоста, где запущен прокси, а до них ещё один хоп). > > б) умеет группировать айпишники по группам (с помощью конфигурации), а > > клиент имеет возможность выбрать группу (например в заголовке к методу > > CONNECT). > > Ну, это всё незамысловато строгается через squid+iproute+iptables... > Даёте группе свой выходной src_ip, и через ip rule его на нужный шлюз. > Таким образом нельзя программно-протокольным образом выбрать группу адресов, через которую отправится предстоящее соединение. Если я правильно понял предлагаемую схему. > Вот только установка своих заголовков может быть лишь в палате для буйных, > где каждый себе своего клиента строчит и свои заголовки в запрос вставить > может. А простые юзеры могут лишь в настройках браузера порт или ip-адрес > прокси выбрать (по порту и ip сквид разрулить трафик может). > Причем здесь браузер и простые юзеры? Что вообще за чушь вы тут понаписали, буйный вы наш? Есть, например, такие инструменты как haproxy, и они, понятное дело, нужны совсем не для того, чтобы некий Уасилий через него в своём Internet Explorer'е сайтики открывал. > > в) умеет гарантировать, что для отдельного взятого клиента очередной > > CONNECT поедет через такой айпи, через который данный клиент ещё не > > законнекчен или выдаст ошибку (типа 429). Идентификацию клиента можно > > делать авторизацией или каким-то уникальным значением, которое > передается, > > например, опять же в одном из заголовков к методу CONNECT. > > Боюсь, для столь удивительной задачи ничего готового не найти. > Тем более что статус 4xx по превышению числа коннекций это точно не для > людей, даже из палаты для буйных. :) > Нормальное поведение любой REST-овой APIшки возвращать 429, если превышен, например, RPS к её вызовам. Вам что-то буйные мерещатся в каждом абзаце. И задача, в общем-то, вполне прозаическая для тех, кому приходится работать со сторонними REST API, которые режут RPS по IP. То, что вам в жизни не приходилось этого делать, не делает задачу удивительной ни на йоту. -- With best regards Maksim Dmitrichenko