Я хочу перенаправить постоянный HTTP-запрос через другой общедоступный IP-адрес. Он подключается к серверу и остается подключенным, поскольку сервер непрерывно передает данные.
Это должно быть прозрачным для приложения; логика маршрутизации должна быть ограничена только установкой HTTP-соединения с номером целевого порта (или хост: порт).
Я подумываю о том, чтобы служба Squid прослушивала IP-адрес LAN, но на нескольких портах; если приложение подключается к порту A, перенаправить запрос через nic A; для соединений с портом B пересылка через разъем B; и так далее.
Подходит ли это для Squid? И где найти подсказки по настройке? Я заблудился, читая документацию по Squid, которая находит все, что связано с этим (в частности, как сопоставить локальные порты-> разные выходные сетевые карты).
Да, со Squid это возможно.
http_port 3128
http_port 3129
http_port 3130
acl port1 myport 3128
acl port2 myport 3129
acl port3 myport 3130
tcp_outgoing_address x.x.x.1 port1
tcp_outgoing_address x.x.x.2 port2
tcp_outgoing_address x.x.x.3 port3
Если у вас разные шлюзы для каждого IP-адреса, вам также необходимо настроить исходную маршрутизацию:
ip rule add from x.x.x.1 table 10
ip rule add from x.x.x.2 table 11
ip route add table 10 default via GW1
ip route add table 11 default via GW2
ip route add default via GW3
В squid.conf важно установить:
server_persistent_connections off
Или моя процедура не сработает.