我在不同的机器上build立了一个路由器和一个拦截HTTP squid代理。 客户应该使用代理(没有知识)在以下方面:
客户端 – >路由器(DNATing代理服务器) – >代理服务器 – >路由器 – > Internet
在代理服务器上运行的请求具有以下属性:
不幸的是,似乎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量将使用不同的接口。 没有应用此路由策略。