Squid代理服务器(不透明)在端口3128和80上工作

我有一个Squid代理服务器(Debian)与authentication完美的工作:

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd 

我希望也试图使用代理作为网关(端口80)的网页获取端口3128redirect的客户端。

我试过iptables:

 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 

没有运气,因为在这种情况下我的端口80客户端得到一个错误:

 The following error was encountered: Invalid Request Some aspect of the HTTP Request is invalid. Possible problems: Missing or unknown request method Missing URL Missing HTTP Identifier (HTTP/1.0) Request is too large Content-Length missing for POST or PUT requests Illegal character in hostname; underscores are not allowed 

所以我决定让鱿鱼监听两个端口修改squid.conf:3128和80

 http_port 80 http_port 3128 

怎么了?

定期连接到3128的客户端必须input密码,并且没有configuration代理的客户端(因此在端口80上工作,因为鱿鱼也是我们的小型networking的防火墙/路由器和网关)可以在不input用户/通过的情况下上网。

我该如何解决这个问题?

iptables或squid.conf我不在乎。

将透明代理放在3129端口上侦听,并将每个请求redirect到80端口上:

 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3129 iptables -I INPUT -p tcp --dport 3128 -j ACCEPT 

squid.conf中:

 http_port 3128 http_port 3129 transparent 

通过这种方式,透明代理将成为默认选项,而使用它进行身份validation的用户必须在其浏览器上configurationproxy:3128。