LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1654|回复: 14

关于菜鸟如何配置squid代理上网!

[复制链接]
发表于 2005-11-24 10:48:05 | 显示全部楼层 |阅读模式
对于一个菜鸟如何才能快速正确的安装和配置squid,满足最基本的要求即代理上网和上网加速!理解squid 的基本架构对于快速掌握squid 的最基本的配置才是最重要的!
1.squid的安装
  redhat linux9自带了squid软件包.下面以rpm包的安装为例介绍squid 的安装.(建议最初的用户用光盘自带的rpm包安装)
  //查看是否安装了squid
  #rpm -qa|grep squid
//将redhat linux9的第一张光盘放入光驱后挂装
#mount  /mnt/cdrom
//进入光盘的redhat/rpms目录
#cd /mnt/cdrom/redhat/rpms
//安装所需的rpm包
#rpm -ivh squid-2.5.stable1-2.i386.rpm
//弹出光盘
#cd
#umount /mnt/cdrom
或者使用#eject可以自动弹出光驱
2.了解redhat linux 9发布的squid
    redhat linux9发布的squid包中的重要文件及其说明
   类别                 文件                            说明
配置相关的文件      /etc/squid/squid.conf            squid 主配置文件
                    /etc/squid/errors                   报告错误使用的语言
                    /etc/squid/mib.txt                 squid-mib定义文件
                    /etc/squid/mime.conf            定义mime  type
                              /etc/squid/msntauth.conf      msnt认证的配置文件

应用程序和库        /usr/sbin/squid                      squid 主程序
                    /usr/sbin/squidclient              统计显示摘要表的客户程序
                    /usr/lib/squid/cachemgr.cgi    查看squid实时运行情况的cgi脚本
                    /usr/lib/squid/*_auth              squid的各种认证库文件

文档                /usr/share/doc/squid-2.5.statle1   squid的文档根目录

缓存目录            /usr/spool/squid                      缓存目录的根

日志相关            /etc/logrotate.d/squid           squid的日志滚动配置文件
                    /var/log/squid/access.log      squid的访问日志文件
                    /var/log/squid/store.log        squid缓存对象状态的日志文件
                    /var/log/squid/cache.log        squid缓存状态的日志文件
其中,squid 的主配置文件为/etc/squid/squid.conf,该配置文件包含了大量的配置说明,所以很长,有3224行之多,下面介绍一下/etc/squid/squid.conf文件的结构

                  squid主配置文件的结构
   配置段落                                              说明
network options                                           有关网络的选项
options which affect the neighbor
selection algorithm                                       作用于邻居选择算法的有关选项
options which affect the cache size               定义cache大小的选项
logfiles pathnames and cache directories     定义日志文件的路径和cache的目录
options for external support programs         外部支持程序选项
options for tuning the cache                         调整cache的选项
timeouts                                                        定义超时的选项
access controls                                              访问控制选项
administrative parameters                            管理参数选项
options for the cache registration service      cache注册服务选项
httpd-accelerator options                               httpd加速选项
deplay pool parameters                                  定义延时池参数

3.在安装和理解了squid的结构后,我们就来配置单个缓存代理服务器
a.squid的基本参数配置
  虽然squid的配置文件很庞大,但是配置单个缓存代理服务器相对简单,只需要修改配置文件中的几个选项即可.

  http_port                   定义squid监听http客户请求的端口.默认为3128
  
  cache_mem                 用于指定squid可以使用的内存的理想值.(若该机器只是用做代理缓存 服务器,该值可以设置为计算机物理内存的1/3)

cache_dir type directory-name mbytes level1 level2;其中type是指linux使用的缓存系统类型,应该是ufs;directory-name指明了缓存控件的顶极目录;mytes定义缓存空间的总量;level1定义第一层缓冲空间的目录个数,默认是16;level2定义第二层缓冲空间的目录个数,默认是256;

b.配置squid的访问控制列表(acl)
   squid支持强大的访问控制功能.通过设置squid的访问控制,可以有效底控制客户是否可以连接到代理服务器,以及控制客户是否能够获得指定的访问资源.为了方便管理,使用acl命令对不同性质的客户进行分类并赋予名称(以不同的aclname标识),然后使用http_access对一类客户(aclname)实施允许或拒绝操作.
   
配置acl和http_access的语法为:
   acl   aclname  acltype   "string1....."
   acl   aclname   acltype  "file".....
   http_access   allow|deny aclname1  aclname2 ...
在定义acl时,可以在acltype后直接书写若干以空格间隔的匹配字符串,也可以在acltype后书写一个用双引号括起来的文件名并在指定的文件中书写以回车间隔的匹配字符串.
在定义acl时,可以使用多种访问控制列表类型(acltype),这里不多介绍,可参考配置文件.

c.配置单个缓存代理服务器举例
//修改主配置文件
#vi /etc/squid/squid.conf

//1.将如下的配置行
#http_port 3128
//改为
http_port 3128 8080
//即:让squid同时监听3128和8080两个端口

//2.将如下的配置行
#cache_men 8mb
//改为
cache_men 92mb
//即:大约使用物理内存的1/3

//3.将如下的配置行前的注释符号去掉
cache_dir  ufs  /var/spool/squid  100  16  256
//即:在/var/spool/squid目录下使用ufs缓存系统类型作为缓冲目录

//4.在http_access配置断的最后添加如下的访问控制配置
acl   myfriends          src     /etc/squid/acl/myfriends   
acl   badurl               url_regex  -i  sex
acl   proxy_time       time    MTWHF  7:00-22:00

在/etc/squid/下新建一个文件夹acl,在acl下建立一个文件myfriends,输入允许上网的ip地址或地址段


//拒绝url中含有sex的访问
http_access  deny   badurl
//允许myfriends文件中的ip地址在工作时间内访问代理服务器
http_access  allow myfriends  proxy_time
//拒绝其他客户机在工作时间内访问代理服务器
http_access  deny proxy_time
//拒绝其他所有连接访问
http_access  deny  all

4.squid 的初始化和启动
  执行如下的操作步骤!

a.对squid进行初始化,创建squid的缓存目录
  #squid -z

通常在进行这一步操作的时候,系统会提示一个错误,一个指明的错误导致不能初始化,错误提示的大意是:please set the  'visible_hostname',这个时候要再次编辑/etc/squid/squid.conf文件添上一行:visible_hostname 你的主机名

b.立即启动squid
#service  squid start
或者#cd /etc/init.d
      #squid

ok,ok,到此为止,你的squid应该可以正常运行了,若希望squid 在下次计算机启动时自动启动,可使用命令:
#ntsysv
选中squid即可!

有不足之处,请大家指点!
发表于 2005-11-24 19:46:28 | 显示全部楼层
用squid基本不能实现加速的功能,相反,速度还会下降。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-25 08:22:45 | 显示全部楼层
为什么呢?
不是用了缓存了吗?
敬请指教!
回复 支持 反对

使用道具 举报

发表于 2005-11-25 11:00:26 | 显示全部楼层
有一些说明:
现在网络上的静态网页不是很多了!
有很多网页上都禁止缓存。
代理的任务是从网上获取网页,如果是在规则之内能够缓存的就缓存在本地。如果你的缓存的文件数比较多,而你的硬盘速度又不是很快,你的代理服务器的性能又不够强劲,那么就会成为影响速度的瓶颈。
如果是不能缓存的文件,那么中间徒增一道检查的关卡,速度必然要下降。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-25 12:25:58 | 显示全部楼层
受益!
那就把它设为null!但是如果不成为瓶颈的化,企不是就很好了吖!
回复 支持 反对

使用道具 举报

发表于 2005-11-25 13:01:38 | 显示全部楼层
如果只是共享上网,而不需要额外的控制,比如用户认证或者URL控制什么的,还是不要用代理好,只要在iptables中做一下nat转换就可以了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-25 13:22:01 | 显示全部楼层
用iptable做nat转换,可以只是允许某一部分客户机上网吗,若可以的话,如何做吖?
回复 支持 反对

使用道具 举报

发表于 2005-11-25 15:11:59 | 显示全部楼层
当然可以了
iptables -t nat -A PREROUTING -s x.x.x.x -j DROP(用来限制指定的IP不能上网,iptables的缺省策略设置为允许。)
iptables -t nat -A POSTROUTING -s x.x.x.0/24 -j MASQUERADE(所有的客户机都进行nat转换)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-25 16:17:47 | 显示全部楼层
我的还是 不行吖!
与这个有关吗:linux的机器不是网关,如果客户端不设置代理,那么他如何监听网络上的局域网内的80端口的请求?
可以让linux只是监听指定ip地址对80端口的请求吗?也就是让指定ip地址可以以透明代理方式上网!
谢谢你吖,真热情!好心人吖!
回复 支持 反对

使用道具 举报

发表于 2005-11-26 00:45:07 | 显示全部楼层
如果你的linux机器不是网关的话,得看你的网络拓扑结构了。
如果拓扑结构合适的话,可以将linux做成一个透明网关,设置网桥,同样可以不用squid(我原来就是这么做的。),这样客户端不需要做任何设置就在你的控制之下了。
但如果网络拓扑结构不允许这么做的话,只能用代理的方式(缺点是用户必须设置代理,有很多不方便的地方。)

能否把你的网络拓扑结构画个图上来,我们可以共同研究一下。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表