Squid是一种在Linux系统下使用的优秀的代理服务器软件。Squid与其他linux代理软件相比下载安装简单,配置简单灵活,支持缓存和多种协议。同时用ipchains+Squid的解决方案,就可以获得通过缓存高性能的同时能够无缝的访问Internet。一次Squid被广泛的应用 。

Squid基础知识      

     Squid 基本配置

squid的配置文件 /etc/squid/squid.conf  基本配置如下:

        http_port 3128 //设置监听的IP与端口号

 

  cache_mem 64 MB //设置内存缓冲的大小

 

  cache_dir ufs /var/spool/squid 2000 16 256 //设置硬盘缓冲大小

 

  cache_effective_user squid //设置缓存的有效用户

 

  cache_effective_group squid //设置缓存的有效用户组

 

  dns_nameservers 192.168.0.254 //设置DNS服务器地址,一般可以不设置,默认使用服务器自己设置的dns

 

  cache_access_log /var/log/squid/access.log //设置访问日志文件

 

  cache_log /var/log/squid/cache.log //设置缓存日志文件

 

  visible_hostname 192.168.0.20 //设置squid主机名称

squid的用户上网控制规则如下:

        禁止IP地址为192.168.16.200的客户机上网
           acl badip src 192.168.16.200 (/255.255.255.255)
           http_access deny badip
        禁止子网为192.168.1.0的客户机上网
           acl badnet src 192.168.1.0/24
           http_access deny badnet
        禁止用户方位IP为210.21.118.68的网址
           acl badip1 dst 210.21.118.68
           http_access deny badnet
        禁止访问域名为www.163.com的网站
           acl baddomain dstdomain www.163.com
           http_access deny baddomain
        禁止用户访问域名含有163.com的网站
           acl badurl  url_regex -i 163.com    -i 不区分大小写
           http_access deny badurl
        禁止用户访问含有sex关键字的url
           acl badurl2 url_regex -i sex
           http_access deny badurl2
        限制IP地址为192.168.16.200 的客户机的并发连接数为5
            acl clientip src 192.168.16.200
            acl conn5  maxconn5
            http_access deny clientip conn5
        禁止192.168.2.0 子网的客户机在周一到周五的8:00 18:00上网
            acl clientip src 192.168.2.0/255.255.255.0
            acl worktime  time MTWHF 8;00-20:00
            http_access deny clientip worktime  
        禁止客户下载*.mp3  *.exe  *.zip *.rar的文件
           acl badfile1 urlpath_regex -i \.mp3$  \.exe$  \.zip$  \.rar$
           http_access deny badfile
        禁止qq通过squid代理上网
           acl qq url_regex -i tencent.com
           http_access deny qq

Squid 基本命令

        1、初始化你在 squid.conf 里配置的 cache 目录

 

  #squid/sbin/squid -z //第一次启动squid服务时必须输入此命令

 

  如果有错误提示,请检查你的 cache目录的权限。

 

  2、对你的squid.conf 排错,即验证 squid.conf 的 语法和配置。

 

  #squid/sbin/squid -k parse

 

  如果squid.conf 有语法或配置错误,这里会返回提示你,如果没有返回,恭喜,可以尝试启动squid。

 

  3、在前台启动squid,并输出启动过程。

 

  #squid/sbin/squid -N -d1

 

  如果有到 ready to server reques,恭喜,启动成功。

 

  然后 ctrl + c,停止squid,并以后台运行的方式启动它。

 

  4、启动squid在后台运行。

 

  #squid/sbin/squid -s

 

  这时候可以 ps -A 来查看系统进程,可以看到俩个 squid 进程。

 

  5、停止 squid

 

  #squid/sbin/squid -k shutdown

实例

 squid的正向代理

实例1

         配置squid代理服务器实现IP为192.168.2.100的客户机上网,其中squid服务器的eth0

IP为 192.168.101.135 连接外网 ,eth1 IP 为192.168.2.1 连接内网客户机.

安装squid

[root@mail ~]# mount /dev/cdrom /mnt/cdrom
[root@mail ~]# rpm -ivh /mnt/cdrom/Server/squid-2.6.STABLE21-3.el5.i386.rpm

配置squid 实现简单代理 编辑配置文件 修改如下内容

637     http_access allow all
919     http_port 192.168.2.1:3128
778     reply_body_max_size 1024 allow all
1575   cache_mem 64 MB
2994   visible_hostname  proxy.my.com

查看监听地址和端口

[root@mail ~]# netstat -tupln |grep 3128
tcp        0      0 192.168.2.1:3128            0.0.0.0:*                   LISTEN      6002/(squid)

设置客户机

客户机只需设置IP ,网关,和浏览器的代理服务器的地址和端口

修改IP

 

设置代理

 

测试如下:

  实例 2

接上一实验 使用squid+iptables 实现透明代理IP为192.168.2.100 的客户机上网

编辑squid配置文档修改如下:

919 http_port 192.168.2.1:3128 transparent

开启转发功能

[root@mail ~]# echo "01"  /proc/sys/net/ipv4/ip_forward
01 /proc/sys/net/ipv4/ip_forward

设置iptables 端口重定向和DNS的NAT转换

[root@mail ~]# iptables -t nat -A PREROUTING  -s 192.168.2.0/24 -i eht1 -p tcp --dport 80 -j REDIRECT --to-ports 3128
[root@mail ~]# iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -p udp --dport 53  -o eth0 -j MASQUERADE

客户机设置

客户机只需设置IP,子网掩码,网关,DNS  对于http使用代理 对于DNS查询使用转发功能

 

测试

 

squid的反向代理

实例 3

内网有意web服务器  配置squid代理服务器 实现反向代理以提高web服务器的处理能力.  内网web服务器IP为192.168.2.100 与squid的IP为192.168.2.1 的eth1 相连,eth0 IP为192.168.101.135 连接外网.

配置Apache服务器 实现简单web站点

编辑squid 配置文档 ,修改如下:

919 http_port 192.168.101.132:80  vhost
1186         cache_peer 192.168.3.100        parent    80    0     originserver

测试如下:

 

 注释:使用单网卡也可以配置正,反向代理。配置同双网卡。