linux系统下SQUID关于HEADER_ACCESS设置


==3.0的squid headeraccess已经改成了requestheaderaccess和replyheaderaccess==
如:在web服务器端,通过header HTTP
XFORWARDEDFOR 可以知道代理服务器的服务器名以及端口,通过HTTP_VIA可以知道客户的内部ip,如下设置即可隐藏

request_header_access Via deny all
request_header_access X-Forwarded-For deny all

问题一:访问用友网站www.ufida.com.cn

代理服务器本身可以直接访问,但是通过代理服务器访问的时候提示“禁止访问403”
查看squid日志access.log发现如下:
1254277400.616     91 192.168.99.22 TCP_MISS/403 230 GET http://www.ufida.com.cn/ - DIRECT/125.35.5.132 text/html
1254277401.391    321 192.168.99.22 TCP_NEGATIVE_HIT/403 238 GET http://www.ufida.com.cn/ - NONE/- text/html
通过[root@PY-Proxy ~]# curl -I  -x 192.168.99.100:80 www.ufida.com.cn
HTTP/1.0 403 Forbidden
Date: Thu, 01 Oct 2009 09:12:23 GMT
X-Powered-By: ASP.NET
Content-Length: 0
Content-Type: text/html
Server: Safe3 IIS Firewall
X-Cache: MISS from Panyu-proxy
X-Cache-Lookup: MISS from Panyu-proxy:80
Proxy-Connection: close
看到禁止了代理访问了。并提示403错误。
[root@PY-Proxy ~]# curl -I  -x 192.168.99.100:80 www.ufida.com.cn看看变化:
HTTP/1.0 200 OK
Date: Thu, 01 Oct 2009 09:21:19 GMT
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=fvfygz45pycaohqvavsn5hrg; path=/; HttpOnly
Cache-Control: private
Expires: Thu, 01 Oct 2009 09:21:19 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 53247
Proxy-Connection: close

如何解决呢?
从分析发现[root@PY-Proxy ~]# cat /usr/local/kingate/var/kingate.log0930_000004 |grep www.ufida.com.cn
Mon Sep 28 19:00:48|[HTTP]192.168.99.25:35510 net get http://www.ufida.com.cn/ 1 1
Mon Sep 28 19:00:50|[HTTP]192.168.99.25:35514 stop-cache get http://dt.tongji.linezing.com/tongji.do?unit_id=957528&uv_id=22250382992952176891&uv_new=0&cna=&cg=&mid=&mmland=&ade=&adtm=&sttm=&cpa=&ss_id=185032026&ss_no=1&ec=1&ref=&url=http://www.ufida.com.cn/&title=%u7528%u53CB%u8F6F%u4EF6%u2014%u2014%u7528%u53CB%u4F01%u4E1A%u7BA1%u7406%u8F6F%u4EF6 %u4E2D%u56FD%u4F01%u4E1A%u8F6C%u578B%u5347%u7EA7%u52A0%u901F%u5668&charset=undefined&domain=ufida.com.
这个是从kingate代理访问的时候发现的日志内通,其中有个重要的提示是“stop-cache”这个关键字。
进一步判断是用友网站为了防止cache攻击,禁止cache的方式。而squid刚好cache方式。

这个就好处理了。修改数据包的头信息,将一些用友不允许的标志都deny掉。
header_access Via deny all
header_access X-Forwarded-For deny all
header_access Server deny all
header_access X-Cache deny all
header_access X-Cache-Lookup deny all
就可以了。
在磁卡看squid的日志:
1254388783.789   4255 192.168.99.25 TCP_MISS/200 60945 GET http://www.ufida.com.cn/images/zhm_img/lb1.jpg - DIRECT/125.35.5.132 image/jpeg
1254388784.303    209 192.168.99.25 TCP_HIT/200 8404 GET http://www.ufida.com.cn/ufidaoff.gif - NONE/- image/gif
1254388880.298    101 192.168.99.100 TCP_MISS/200 334 HEAD http://www.ufida.com.cn - DIRECT/125.35.5.132 text/html
出现:tcp_miss/200就证明已经ok了。

问题二、访问广州地税网www.gzds.gov.cn不能访问,直接出去可以,kingate代理也可以

现象1:通过squid代理无法打开,通过linux下firefox2.0版本访问,无任何提示,通过ie浏览器,第一次打开是个空页面,刷新出现无法访问的页面。windows下的firefox3.5访问时,提示“内容编码错误
无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式。
    * 请联系网站的所有者以告知此问题。”


现象2:查看squid的access。log日志无任何不正常现象。查看kingate日志也是很正常的访问日志。

curl -I -x 192.168.99.100:80 www.gzds.gov.cn

[root@PY-Proxy ~]# curl -I -x 192.168.99.100:80 www.gzds.gov.cn
HTTP/1.0 200 OK
Date: Wed, 27 Jan 2010 06:54:53 GMT
Last-Modified: Tue, 26 Jan 2010 10:40:07 GMT
ETag: "2100014-2dec7-47e0ee8c96fc0"
Accept-Ranges: bytes
Vary: Accept-Encoding,User-Agent
Content-Type: text/html
Content-Length: 188103
Proxy-Connection: close

注意到有Vary: Accept-Encoding,User-Agent,这里给解决问题提示了答案。

解决办法:
vi  /usr/local/squid/etc/squid.conf
将header_access Accept-Encoding allow all (默认)修改为header_access Accept-Encoding deny all
就可以了。

问题三:代理无法打开job168.com

现象1:
[root@proxy-server ~]# curl -I -x 10.168.193.250:808 www.job168.com
HTTP/1.0 403 Forbidden
Server: squid/2.5.STABLE14
Mime-Version: 1.0
Date: Thu, 19 Aug 2010 01:28:25 GMT
Content-Type: text/html
Content-Length: 1069
Expires: Thu, 19 Aug 2010 01:28:25 GMT
X-Squid-Error: ERR_ACCESS_DENIED 0
X-Cache: MISS from proxy-server
Proxy-Connection: close

现象2:通过firefox访问

内容编码错误


无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式。

    * 请联系网站的所有者以告知此问题。


解决办法:vi  /usr/local/squid/etc/squid.conf
将header_access Accept-Encoding allow all (默认)修改为header_access Accept-Encoding deny all
就可以了。

[root@proxy-server ~]# curl -I -x 10.168.193.250:808 www.job168.com
HTTP/1.0 403 Forbidden
Mime-Version: 1.0
Date: Thu, 19 Aug 2010 01:42:55 GMT
Content-Type: text/html
Content-Length: 1069
Expires: Thu, 19 Aug 2010 01:42:55 GMT
X-Squid-Error: ERR_ACCESS_DENIED 0
Proxy-Connection: close