squid:
squid是一款代理服务器软件,能提供http,ftp的代理,加速网络内部客户机的访问速度。
实现方式:先定义acl(access control list),然后给这些acl权限;其中acl可以是source地址段,
也可以是target地址段,还可以是端口值,甚至可以是时间段,或者是这些的组合。
透明代理:一般情况下,使用代理必须在客户端指定代理服务器的地址和端口。
squid可以做成透明代理的形式,就是客户端无须指定代理服务器,从默认网关访问时,
自动走的是代理路径。客户端根本就不知道自己使用的是代理服务器。
这是squid和网关在一台机器上的情况,如果不在一起,可以通过iptables这些规则,把客户端对
80端口的访问都重定向到代理服务器的代理端口。
basic验证:有时为了安全起见,需要给客户以用户名和密码的验证。
#该选项指出了认证方式(basic)、需要的程序(ncsa_auth)和
对应的密码文件(password)
auth_param basic program /usr/bin/ncsa_auth /var/squid/etc/password
# 指定认证程序的进程数
auth_param basic children 5
# 浏览器显示输入用户/密码对话框时的领域内容
auth_param basic realm My Proxy Caching Domain
# 基本的认证有效时间
auth_param basic credentialsttl 2 hours
# 普通用户需要通过认证才能访问Internet
acl normal proxy_auth REQUIRED
http_access allow normal
注意:需要先定义一个acl aclname proxy_auth REQUIRED,说明这个acl都是需要验证的;
然后还需要给它一个访问权限http_access allow aclname,来说明允许这个acl访问。
但是这个http_access的放置位置需要考虑周全。如果放在其他http_access的最前面,说明
所有的acl访问都需要密码验证。如果想设置特权用户,必须把特权用户acl的http_access放
在前面。
如何设置basic验证的用户名和密码呢?
使用apache的htpasswd命令,可以生成用户名和密码
htpasswd /tmp/squidpasswd guest
在/tmp/squidpasswd文件中新建一个用户guest,第一次使用htpasswd命令时使用-c命令,创建这个文件。
如果本机中没有apache,可以使用其他机器的htpasswd命令生成密码文件,然后拷贝到本机。
下面给一个squid.conf的例子:
# 服务器配置
http_port 192.168.0.1:3128 -------指定服务器地址和端口
cache_mgr xxxxx@xxxxx.com -------指定管理者邮箱
cache_dir ufs /var/squid -------缓存文件路径
cache_mem 32MB -------缓存文件大小
cache_swap_low 90 -------缓存低限
cache_swap_high 95 -------缓存高限,达到95%后,不再会添加缓存,而是替换旧的缓存,直到小于90%
cache_access_log /var/squid/access.log -------访问日志文件
cache_log /var/squid/cache.log -------缓存日志
cache_store_log /var/squid/store.log -------储存日志
visible_hostname proxy1 -------在访问页面显示的代理服务器的名称
client_mask 255.255.255.255 -------把没一个客户端都作为一个独立的主机对待
httpd_accel_host virtual -------以下几个为设置透明代理专有选项
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_user_host_header on
# 用户分类
acl advance arp 0f:01:02:1f:4c:3e
acl normal proxy_auth REQUIED
acl all src 0.0.0.0
# 行为分类
acl mmxfile urlpath_regex /.mp3$ /.avi$ /.exe$
acl conncount maxconn 3
acl worktime time MTWHF 8:30-12:00 14:00-18:00
acl sinapage dstdomain ok.sina.com.cn
acl qq dstdomain .tcccent.com.cn
# 处理
http_access allow advance
http_access deny conncount normal
http_access deny !worktime
http_access deny mmxfile
http_access deny sinapage
http_access deny qq
http_access allow normal
配置后的状况是,advance组可以不受任何限制地访问Internet,
而normal组则只能在工作时间上网,而且不能下载多媒体文件,
不能访问某些特定的站点,而且发送请求不能超过3个。