On Thu, Mar 23, 2023 at 04:20:16PM +0400, Maksim Dmitrichenko wrote:
> чт, 23 мар. 2023 г. в 14:01, Eugene Berdnikov <[1]bd4@protva.ru>:
> Ну, это всё незамысловато строгается через squid+iproute+iptables...
> Даёте группе свой выходной src_ip, и через ip rule его на нужный шлюз.
>
> Таким образом нельзя программно-протокольным образом выбрать группу
> адресов, через которую отправится предстоящее соединение. Если я правильно
> понял предлагаемую схему.
Что значит "программно-протокольным образом"?
"Программно" означает, что решение о выборе группы айпишников, через которое поедет соединение, принимается не проксёй, а программой, которое соединение устанавливает. "Протокольно" означает, что о принятом решении она информирует проксю через протокол. Так как речь о HTTP Proxy, то мне кажется, что наиболее естественно это сделать через какой-нить заголовок типа "x-ip-group-name". Но я не настаиваю конкретно на этом способе.
Сквид умеет задавать src_ip исходящих соединений, по заданным в конфиге
критериям. В эти критерии могут входить параметры соединения, выбираемые
на стороне клиента, конкретно dst_ip и dst_port. Как вместо одного
исходящего от сквида src_ip сделать пул адресов -- задача на дом.
Я в курсе, как работает сквид. Но мне не нужна конфигурация, когда для выбранного host:port соединение будет выходить всегда с одной и той же группы адресов. Задача как раз в том, что первое соединение установить с одной группы, второе - со второй, а третье - мы вообще не указываем желаемую группу, и прокся, например, сама решает каким-нить round-robin'ом, какой src_ip выбрать. Поднимать несколько сквидов - по одному на каждую группу: тоже так себе вариант