r3 - 17 Sep 2008 - 09:21:36 - Main.yfangYou are here: YWiki >  MyTech Web > 在机房搭建squid代理服务器实战记录

在机房搭建squid代理服务器实战记录

本文说明

  • 为什么要写这么一篇文章呢,其实外面squid代理服务器的文章已经多如牛毛了,不是么!好吧,我写这个文章的目的有二,第一,算是一个笔记吧,第二,因为是机房的服务器上安装squid,碰到了一点小麻烦,这里也算给类似操作的朋友提个醒。
  • 本文版权归 作者yfang ( yangfang@fudan.edu.cn )所有。
  • 欢迎非版权转载,如果转载,请保留原作者信息及本网页URL,谢谢!

环境

  • 软件 CentOS5/Squid2.6
  • 时间 2008.8.29

需求

  1. 限客户端ip,不想谁都能用这个代理
  2. 不想让server看到客户端真实的ip或者发现客户端在用代理

详细步骤

  • Step 1 超级简单的安装过程
yum install squid  # 够简单吧

  • Step 2 修改配置文件
# 默认的配置文件是 /etc/squid/squid.conf,为了让它能用,一般至少修改两个地方

# 首先,明确写出 visible_hostname,否则启动时候会报错如下:
#Squid Cache (Version 2.6.STABLE6): Terminated abnormally.
#CPU Usage: 0.005 seconds = 0.002 user + 0.003 sys
#Maximum Resident Size: 0 KB
#Page faults with physical i/o: 0
#FATAL: Could not determine fully qualified hostname.  Please set 'visible_hostname'

visible_hostname Ysquid

# 然后就是设定允许远程客户端的ip,这个你可以在配置文件中搜索 our_networks ,然后设定它,比如
acl our_networks src 11.12.13.14/32 22.33.44.55/32 
http_access allow our_networks

  • Step 3 启动服务
/etc/init.d/squid start
# 按理说,修改完上面两个参数,我就应该可以用代理了,虽然这时的配置还没有隐藏客户信息的要求,我只是想试试看能不能用先。
  • Step 4 测试在11.12.13.14这台机器上设定代理,打开网页,然后浏览器毫不留情的失败了,郁闷!接下来花了将近1个小时确认错误。
  • Step 5 花了很多时间研究配置文件,终于实在看不出来问题,放弃了,下面是我详细的debug过程。
    1. 看看防火墙,确实没有禁用这个端口啊,而且从11.12.13.14连接到代理服务器的其他访问都是好的,比如web,ssh,数据库等等。
    2. 后来在squid服务器上开出了iptraf来监听11.12.13.14来访问服务器上访问自己的3128(默认)端口的数据,结果竟然一个包都没有
    3. 为了确认这一事实,再次停下squid,然后nc -l 3128,远程telnet xx.xx.xx.xx 3128 依然没反应,同样的nc命令,换个端口就一切OK
    4. 终于明白了,都是机房搞的鬼,把进机房的3128端口数据干掉了,怪不得@@
  • Step 6 其实后面就很顺利了,修改端口到8080
  • Step 7 然后是隐藏客户信息的相关设置
# 默认设置时,会出现下面两个讨厌的http参数,一看就知道用代理了
HTTP_X_FORWARDED_FOR 11.12.13.14 
HTTP_VIA 1.1 Ysquid:8080 (squid/2.6.STABLE6)

# 修改squid配置文件,添加 forwarded_for off
HTTP_X_FORWARDED_FOR 11.12.13.14 # 这句就消失了
HTTP_VIA 1.1 Ysquid:8080 (squid/2.6.STABLE6) # 这句还在

# 继续修改squid配置文件,再添加 header_access Via deny all 和 header_access X-Forwarded-For deny all
HTTP_X_FORWARDED_FOR 11.12.13.14 # 这句就消失了
HTTP_VIA 1.1 Ysquid:8080 (squid/2.6.STABLE6) # 这句也消失了,一切都好了
  • Step 8 不要忘了重新启动服务
/etc/init.d/squid restart
  • tip 总结一下,下面是原始配置文件和结果配置文件的diff结果,大概我就改了这么多吧
73,77c73
<
< # yfang 2008.8.29 the IDC has ban the des port 3128
< # http_port 3128
< http_port 8080
<
---
> http_port 3128
998d993
< cache_dir ufs /var/spool/squid 300 16 256
2529,2532d2523
< # yfang 2008.8.29
< acl our_networks src 11.12.13.14/32 22.33.44.55/32
< http_access allow our_networks
<
2849d2839
< visible_hostname Ysquid
3127,3129d3116
< # 2008.9.1 yang.fang
< forwarded_for off
<
3450,3454d3436
< # 2008.8.29 yang.fang
<        header_access Via deny all
<        header_access X-Forwarded-For deny all
<

多说两句

  • nc不同的版本参数有变化,我这次试验过程中使用了两种版本的nc,以下是具体不同
# 下面说明一下两种版本nc完成同样的监听本地端口的最简单的这个功能的不同写法
# nc-1.84-10.rc6 (on CentOS5)
nc -l 1234
# nc-1.10-22 (on CentOS4)
nc -l -p 1234

# 以上两种写法不能混用,效果检查可以通过另外一台机器telnet xxx.xxx.xxx.xxx 1234做到

参考文档

Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r3 < r2 < r1 | More topic actions
MyTech.在机房搭建squid代理服务器实战记录 moved from MyTech.在机房搭建squid透明代理服务器实战记录 on 17 Sep 2008 - 09:07 by Main.yfang - put it back
 
Powered by YWiki
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding YWiki? Send feedback