我的 squid.conf(squid3)
acl localnet src 192.168.1.0/255.255.255.0
acl localweb src 192.168.199.0/255.255.255.0
http_port 3128 transparent
http_access allow localnet
http_access allow localweb
我的(服务器 squid 也运行 dhcp 服务器)ip 是:
eth0 ip:192.168.1.10 bcast:192.168.1.255 网络掩码:255.255.255.0
eth1 ip:192.168.199.1 bcast:192.168.199.255 网络掩码:255.255.255.255
我想要运行的客户端命令是:
curl -x 192.168.1.10:3128 www.google.com
运行curl的客户端的源IP是:
IP 192.168.199.10 bcast 192.168.199.255 网络掩码 255.255.255.0
另外在服务器中我还添加了以下iptables规则:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128
问题是,在发出请求时向客户端返回以下消息:
192.168.199.10 TCP_DENIED GET www.google.com Err_Access_Denied by squid localhost (squid 3.1.19)
如果我执行一个简单的 sudo cat /var/log/squid3/access.log,我会看到:
1 192.168.199.10 TCP_DENIED/403 3629 获取http://www.google.com
如果我执行 curl -L -V ,我会得到很多信息,但总结一下:
获取 HTTP/1.1 用户代理 ***** curl
主机:www.google.com 接受:/代理连接:Keep-Alive HTTP 1.0,假定在主体之后关闭 HTTP/1.0 403 禁止服务器:squid/3.1.19 X-Cache:来自 localhost 的 Miss x-Cache-Lookup:来自 localhost:3128 的 NONE Via:1.0 localhost(squid/3.1.19)关闭连接 #0
因此,我假设我的客户端正在访问运行 squid 的主机,但 Squid 无法转发请求。我试过http_access allow all
,但这也没用。