27.1 squid概述
squid是linux下常见的代理服务器。Linux下代理服务器对硬件的要求不高,但是对内存的要求很高。代理服务器主要实现对一定的网络管理要求以及带宽要求的地方。
27.2 squid基本配置
27.2.1 squid安装与启动服务
rpm -q squid
squid-2.5.STABLE12-5.1
fc5 linux默认已经安装了squid代理服务器软件,如果没有安装的话,可以在光盘中找到该软件进行安装即可。
chkconfig squid on /*设为开机自启动*/
service squid start /*开启服务*/
27.2.2 squid配置
Squid只要做一些基本的配置就能够提供代理服务,这里只是提供最基本的配置方案,如果需要有更加精细的配置要求的话,需要对其访问控制列表进行修改。
用vi删除原有配置文件的内容,输入以下内容。
vi /etc/squid/squid.conf
#代理服务器的监听端口
http_port 192.168.1.1:8080
#内存缓冲区的大小
cache_mem 64 MB
#设置硬盘缓冲区最大4096MB,16个一级目录,256个二级目录。
cache_dir ufs /var/spool/squid 4096 16 256
#设定使用缓存的有效用户
cache_effective_user squid
#设定使用缓存的有效组
cache_effective_group squid
#定义dns服务器的地址
dns_nameservers 202.103.1.117
#设置访问日志文件
cache_access_log /var/log/squid/access.log
#设置缓存日志文件
cache_log /var/log/squid/cache.log
#设置网页缓存日志文件
cache_store_log /var/log/squid/store.log
#设置squid主机名称,一般为IP地址。
visible_hostname 192.168.1.1
#设置管理员email地址
cache_mgr [email protected]
#访问控制列表
#允许所有
acl all src 0.0.0.0/0.0.0.0
#定义允许名称为all的http请求。
http_access allow all
27.2.3 初始化squid配置
1.创建缓冲区目录结构
在初次启动squid之前应建立硬盘缓冲区目录结构。
/usr/sbin/squid -z
2009/02/13 19:54:33| Creating Swap Directories
目录缓冲区地址/var/spool/squid
2.设置squid错误提示信息为中文
mv /etc/squid/errors /etc/squid/errors.bak
#创建快捷方式
in -s /usr/share/squid/errors/simplify_chinese /etc/squid/errors
/etc/init.d/squid reload或service squid reload
27.3 squid透明代理配置
27.3.1 squid透明代理介绍
透明代理就是nat与代理的结合,透明就是工作在这种方式下的客户机感觉不到代理服务器的存在,不需要在浏览器中进行设置。只需要把网关设为代理服务器以及配置正确的dns地址。
27.3.2 squid透明代理配置
Squid只要做一些基本的配置就能够提供代理服务,以下基本配置文件的内容是一样的,只需要在此基础上进行必要的修改。
vi /etc/squid/squid.conf
http_port 192.168.1.1:8080
cache_mem 64 MB
cache_dir ufs /var/spool/squid 4096 16 256
cache_effective_user squid
cache_effective_group squid
dns_nameservers 202.103.1.117
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
visible_hostname 192.168.1.1
cache_mgr [email protected]
#以下是透明代理的设置,不可少。
#定义代理服务器为virtual加速模式。
httpd_accel_host virtual
#要加速的端口
httpd_accel_port 80
#squid既是web请求加速器又是代理服务器
httpd_accel_with_proxy on
#代理服务器的缓存功能才能工作。
httpd_accel_uses_host_header on
acl all src 0.0.0.0/0.0.0.0
http_access allow all
27.3.3 配置iptables
将所有由eth0接口进入的web服务80端口的请求直接转发到8080口,由squid去处理。
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
27. 4 squid用户认证配置
27.4.1 squid认证介绍
squid本身不自带认证功能,需要由其它程序在进行认证。Squid就是可以实现没有经过认证的用户不能实现上网。
27.4.2 squid用户认证配置
基本配置文件都是相同的,只需要在此基础上进行修改。
vi /etc/squid/squid.conf
http_port 192.168.1.1:8080
cache_mem 64 MB
cache_dir ufs /var/spool/squid 4096 16 256
cache_effective_user squid
cache_effective_group squid
dns_nameservers 202.103.1.117
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
visible_hostname 192.168.1.1
cache_mgr [email protected]
#以下实现用户身份认证的语名
#设定认证程序路径,与认证程序密码。
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
#认证程序进程数
auth_param basic children 5
#用户认证后的有效时间,超过时间需要再次认证。
auth_param basic credentialsttl 2 hours
#显示验证框时的提示内容。
auth_param basic realm Example.com's Squid proxy-caching
#允许经过认证的用户访问
#acl 列表名称 列表类型 列表值
acl auth_user proxy_auth REQUIRED
http_access allow auth_user
27.4.3 建立帐户文件
可以利用apache的htpasswd程序来生成帐户文件
htpassed -c /etc/squid/passwd redhat
在第一次生成帐户文件的时候需要加入-c,以后就不需要了。
注:还需要对passwd文件设置其它用户可读权限。在配置过程中可以出现认证框,但是输入密码不行。经发现权限为600。root用户root组,配置文件中squid的用户为squid,造成不能读取密码。
chmod o+r /etc/squid/passed
27.4.4 客户端配置
基本配置与认证代理,只需要在IE中internet选项/连接/局域网设置/代理服务器中填入代理服务器的IP地址与端口即可。
透明代理,与正常的nat配置主网的方式一样,只要设置网关与dns即可,不需要设置IE。
27.4.5 验证
其它两上配置都成功验证,可以直接应用于实际环境中。
27.5 squid访问控制应用
27.5.1 禁止访问网络
1.禁止一台电脑上网
acl ip src 192.168.1.200
http_access deny ip
2.禁止192.168.1.0网段的电脑上网
acl ip src 192.168.1.0/255.255.255.0
http_access deny ip
27.5.2 禁止访问特定网站
1.禁止访问某IP地址
acl ip dst 192.168.1.200
http_access deny ip
说明:不能访问该目标IP地址的所有内容,包含网站。与上面的内容区别。
2.禁止访问某网站
acl ip dstdomain -i www.abc.com
http_access deny ip
说明:只是不能访问www.abc.com,下面的子页面还是可以访问的。
3.禁止访问含有某域名的网站
acl ip url_regex -i abc.com
http_access deny ip
说明:比上面的控制严格。
27.5.3 基于时间的访问控制
1.禁止某子网在周一至周五9:00到18:00(上班时间不能上网)
acl ip src 192.168.2.0/255.255.255.0
acl worktime time MTWHF 9:00-18:00
http_access deny ip worktime
说明:可以参考此规则进行变通。
2.禁止下载含有.rar、.mp3
acl ip urlpath_regex -i \.mp3$\.rar$
http_access deny ip