• Re: =?utf-8?B?0J3Rg9C20LXQvSDQv9GA0L7QutGB?= =?utf-8?B?0LgsINC90L4g0YXQ

    From Eugene Berdnikov@21:1/5 to Maksim Dmitrichenko on Thu Mar 23 11:10:01 2023
    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 сквид разрулить трафик может).

    в) умеет гарантировать, что для отдельного взятого клиента очередной
    CONNECT поедет через такой айпи, через который данный клиент ещё не
    законнекчен или выдаст ошибку (типа 429). Идентификацию клиента можно
    делать авторизацией или каким-то уникальным значением, которое передается,
    например, опять же в одном из заголовков к методу CONNECT.

    Боюсь, для столь удивительной задачи ничего готового не найти.
    Тем более что статус 4xx по превышению числа коннекций это точно не для
    людей, даже из палаты для буйных. :)
    --
    Eugene Berdnikov

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Eugene Berdnikov@21:1/5 to Maksim Dmitrichenko on Sat Mar 25 08:20:01 2023
    On Fri, Mar 24, 2023 at 09:07:00PM +0400, Maksim Dmitrichenko wrote:
    чт, 23 мар. 2023 г. в 17:56, Eugene Berdnikov <bd4@protva.ru>:

     Сквид умеет задавать src_ip исходящих соединений, по заданным в конфиге
     критериям. В эти критерии могут входить параметры соединения,
    выбираемые
     на стороне клиента, конкретно dst_ip и dst_port. Как вместо одного
     исходящего от сквида src_ip сделать пул адресов -- задача на дом.

    Я в курсе, как работает сквид. Но мне не нужна конфигурация, когда для
    выбранного host:port соединение будет выходить всегда с одной и той же
    группы адресов. Задача как раз в том, что первое соединение установить с
    одной группы, второе - со второй, а третье - мы вообще не указываем
    желаемую группу, и прокся, например, сама решает каким-нить
    round-robin'ом, какой src_ip выбрать. Поднимать несколько сквидов - по
    одному на каждую группу: тоже так себе вариант

    Kлиент может для первого соединения использовать одну комбинацию проксевого
    ip:port, для следующего -- другую, а если хочет предоставить выбор группы
    проксе, то третью. Вы лишь хотите, чтобы этот выбор был реализован не в
    параметрах соединения на 4-м уровне модели OSI, а в заголовках запроса,
    т.е. на более высоком уровне. Не знаю, чем может быть так ограничен выбор
    (может быть в вашей местности настоящих буйных мало:)), но если хотите
    именно такой прокси, предложить готовый не могу.
    --
    Eugene Berdnikov

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)