我有一个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。