根据本地端口,通过不同的公共 IP 在 Squid 中进行代理转发

根据本地端口,通过不同的公共 IP 在 Squid 中进行代理转发

我希望通过不同的公共 IP 转发持久 HTTP 请求。它连接到服务器并在服务器持续传输数据时保持连接。

这对于应用程序来说是透明的;路由逻辑需要限制为仅仅与目标端口号(或主机:端口)建立 HTTP 连接。

我正在考虑让 Squid 服务在 LAN IP 上但在多个端口上监听;如果应用程序连接到端口 A,则通过 nic A 转发请求;对于端口 B 连接,则通过 nic B 转发;等等。

这对于 Squid 来说是一项合适的任务吗?我在哪里可以找到一些有关配置的提示?我读了 Squid 文档却找不到与此相关的任何内容(特别是如何映射本地端口->不同的输出 NIC)。

答案1

是的,使用 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

否则我的程序将不起作用。

相关内容