Squid 3.5:阻止拦截模式下的转发循环

我在不同的机器上build立了一个路由器和一个拦截HTTP squid代理。 客户应该使用代理(没有知识)在以下方面:

客户端 – >路由器(DNATing代理服务器) – >代理服务器 – >路由器 – > Internet

在代理服务器上运行的请求具有以下属性:

  • 源IP地址:原始客户端的IP地址
  • 源端口:原始客户端的端口
  • 目标IP地址:代理服务器的IP地址(192.168.4.50)
  • 目的地端口:3380

不幸的是,似乎squid试图转发数据包到请求的目标地址,这是代理服务器本身,并创build一个无限循环。 取自cache.log

2015/12/18 14:11:50 kid1| WARNING: Forwarding loop detected for:

我如何configurationsquid而不是通过DNSparsingHTTP请求中的主机名,然后将请求转发到默认HTTP端口80上parsing的IP地址?

补充信息:

DNAT由路由器上的iptables完成,具有以下规则: iptables -t nat -A PRE_VS_PROXY -p tcp --dport 80 -j DNAT --to-destination 192.168.4.50:3380

access.log示例条目:

 1450444309.741 0 192.168.4.50 TCP_MISS/403 4277 POST http://ocsp.digicert.com/ - HIER_NONE/- text/html 1450444309.742 46 192.168.4.46 TCP_MISS/403 4341 POST http://ocsp.digicert.com/ - ORIGINAL_DST/192.168.4.50 text/html 

鱿鱼的有效configuration:

 http_access allow localhost manager http_access deny manager http_access deny to_localhost cache deny all http_access allow all http_access deny all http_port 3128 http_port 3380 intercept http_port 3443 intercept coredump_dir /var/squid/cache/squid shutdown_lifetime 1 seconds 

通过使用tcpdump来查看DNSstream量,我发现当squid处理HTTP请求时,实际上有两个DNS请求:一个用于parsingHTTP请求中的主机名,另一个是对请求目标IP地址的反向查询。

http://lartc.org/lartc.html#LARTC.COOKBOOK.SQUID将是一个很好的起点。

不要DNAT到代理,通过标记数据包路由stream量到它。 来自代理的stream量将使用不同的接口。 没有应用此路由策略。