鱿鱼拦截代理卡住转发循环

我试图build立一个使用Squid的debugging代理,主要是testing我们自己的客户端通信库的各种代理types(我们的客户端的一种可能性,是连接到外部拦截和过滤代理服务)。

我们的networking设置如下所示:

[客户端设备/浏览器] – [代理,公共IP只] – [目标网站,例如Google,Facebook等]

在testing设置时,从Linux客户端执行此操作可以正常工作(因为端口8991没有设置拦截):

$ curl --proxy http://<squidserverip>:8991 http://www.example.com/ 

然而,这个版本从Squid发出一个拒绝访问的错误页面(因为端口8990被设置了拦截):

 $ curl --proxy http://<squidserverip>:8990 http://www.example.com/ 

在Squid服务器上,我在cache.log中看到以下内容:

 2015/03/11 20:10:44 kid1| WARNING: Forwarding loop detected for: GET / HTTP/1.1 User-Agent: curl/7.26.0 Host: www.example.com Accept: */* Via: 1.1 <servername> (squid/3.4.8) X-Forwarded-For: <client-source-ip> Cache-Control: max-age=259200 Connection: keep-alive 

在这些例子中,出于安全原因,我已经混淆了实际的请求(带有占位符名称/标题)。

我的squid.conf目前看起来像这样(删除了注释行和空行):

 acl SSL_ports port 443 acl SSL_ports port 8443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 8443 acl CONNECT method CONNECT acl SSL method CONNECT http_access allow manager localhost http_access deny manager http_access allow localhost http_access allow all http_reply_access allow all http_port 8990 intercept ssl-bump cert=/etc/squid3/certificate.pem generate-host-certificates=on http_port 8991 https_port 8443 cert=/etc/squid3/certificate.pem key=/etc/squid3/certificate.pem ssl-bump intercept generate-host-certificates=on dynamic_cert_mem_cache_size=4MB options=ALL ssl_bump none localhost ssl_bump client-first all sslproxy_flags DONT_VERIFY_PEER sslproxy_cert_error allow all sslcrtd_program /usr/lib/squid3/ssl_crtd -s /var/lib/ssl_db -M 4MB sslcrtd_children 5 netdb_filename none coredump_dir /var/spool/squid3 pinger_enable off cache deny all refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320 query_icmp off always_direct allow all never_direct allow all 

根据我通过谷歌的search,我得出的结论是拦截function要求我设置一些自定义路由与iptables,但我已经尝试过的各种configuration都没有给出任何结果。

我们似乎能够从客户端连接到Squid(在所有三个端口上,包括https_port的SSL握手),但是我无法成功地在两个执行拦截的端口上执行请求。

任何帮助将不胜感激,无论是正确的iptables安装我们的networkingconfiguration,或需要更改squid.conf(或服务器上的其他configuration文件)。