安装 squid (版本为2.7):
apt-get install squid
配置 squid:
vi /etc/squid/squid.conf
基本配置项说明:
http_port IP:端口 设置squid监听的IP地址和端口
cache_mem 指定使用多少物理内存作为高速缓存.如果这台服务器仅用于共享上网,没有其他服务,
则可加大物理内存的1/2,但如果还有其他服务则cache_mem的大小不应超过物理内存
的1/3,否则会影响服务器的总体性能.
cache_dir ufs /var/spool/squid 4096 16 256
指定硬盘缓冲区的大小,其中ufs指的是缓冲的存储类型,一般为
ufs,/var/spool/squid指硬盘缓冲存放的目录,4096代表缓存空间最大为4096M,
16代表squid可以在硬盘缓冲存放的目录下建立的第一级子目录的数目,缺省值为16.
最后的256是可以建立第二级子目录的数目,缺省值256.
maximum_object_size 最大/最小单文件大小
minimum_object_size
maximum_object_size_in_memory
minimum_object_size_in_memory
内存中最大/最小单文件大小
error_directory
错误文档目录
dns_nameservers IP 为了使Squid能解析域名,必须告诉squid有效DNS服务器..
cache_access_log 定义了访问记录日志文件的路径,该日志记录了用户访问Internet的详细信息,
通过日志文件可以查看每台客户机上网的记录...所以大家不要干坏事的...
cache_log 设置记录缓存的相关信息日志文件的路径...
cache_store_log
定义了记录网页在缓存中调用情况日志文件的路径...
visible_hostname 定义了运行squid的主机名称,当访问发生错误时,该选项的值会显示在错误提示网页
中.建议输入主机的IP地址.
cache_mgr 定义设置squid管理员的d E-mail地址,当访问发生错误时,该选项会显示在页面上.
reply_body_max_size 缓存目录大小
cache_effective_user squid 设定使用缓存的有效用户.(系统默认)
cache_effective_group squid 设定使用缓存的有效用户组(系统默认)
acl访问控制:
列表类型:
src IP 源IP地址(客户机的IP地址).
dst IP 目标地址(服务的器IP地址).
scrdomain 源名称 (客户机所属的域).
dstdomain 目标名称(服务器所属的域).
url_regex URL规则的表达式
urlpath_regex: URL-path 略去协议和主机名的URL规则表达式匹配.
proxy_auth 通过外部程序进行用户认证.
maxconn 单一IP最大连接数.
time 语法:[星期][时间段]
Monday-M;Tuesday-T ... Sunday-S
例子:
# 禁止地址或者网段(修改掩码可以设置网段,修改dst或src实现目的或源)
acl dropip src 192.168.5.110/32
http_access deny dropip
# 禁止源地址 /etc/squid/clist 列表
acl clist src "/etc/squid/clist"
http_access deny clist
# 禁止用户访问新浪域名
acl dropurl dstdomain
http_access deny dropurl
# 禁止访问域名包含sina.com的网站(-i 忽略大小写)
acl dropurl1 url_regex -i sina.com
http_access deny dropurl1
# 限制IP地址为192.168.5.200客户机并发最大连接数为5
acl clientip src 192.168.5.200
acl conn5 maxconn 5
http_access deny clientip1 conn5
# 禁止192.168.5.0这个网段在周一至周五的9:00至15:00上网
acl clientnet src 192.168.5.0/24
acl worktime tiem MTWHF 9:00-15:00
http_access deny clientnet worktime
# 禁止下载MP3 exe rar为后辍名的文件
acl download urlpath_regex -i \.MP3$ \.exe$ \.rar$
http_access deny download
运行squid:
添加squid账户
useradd squid
创建我们指定的缓存服务目录和修改权限为配置文件中的squid账户
mkdir -p /var/spool/squid /var/squid /var/squid
chown -R squid:squid /var/spool/squid /var/squid
创建子目录
squid -z
检查语法
squid -k parse
没有任何提示的话就证明配置正确,运行 squid 命令,默认为后台守护进程.
再端口重定向(把访问80端口的数据定义到我们的本机的squid监听端口)
- # 定义到本机的3180端口
- iptables -t nat -A PREROUTING -s 10.10.10.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3180
- # 定义单独的squid服务器
- iptables -t nat -A PREROUTING -s 10.10.10.0/24 -p tcp --dport 80 -j DNAT --to 172.0.0.2:3180
模版:
- http_port 10.10.10.1:3180 transparent
- cache_mem 128 MB
- cache_dir ufs /var/spool/squid 4096 16 256
- dns_nameservers 61.128.128.68
- cache_access_log /var/squid/access.log
- cache_log /var/squid/cache.log
- cache_store_log /var/squid/store.log
- visible_hostname 10.10.10.1
- cache_effective_user squid
- cache_effective_group squid
-
- acl all src all
- acl dropurl url_regex -i sina.com
- acl download urlpath_regex -i \.MP3$ \.exe$ \.rar$
-
- http_access deny dropurl
- http_access deny download
-
http_port 122.228.70.202:3180 transparent
-
cache_mem 4000 MB
-
maximum_object_size 20480 KB
-
minimum_object_size 1 KB
-
cache_dir ufs /var/spool/squid 80960 16 256
-
dns_nameservers 61.153.177.196
-
cache_access_log /dev/null
-
cache_log /dev/null
-
cache_store_log none
-
visible_hostname 122.228.70.202
-
cache_effective_user squid
-
cache_effective_group squid
-
request_header_access Server deny all
-
request_header_access Via deny all
-
request_header_access X-Forwarded-For deny all
-
- http_access allow all
操作完毕后重新启动服务读取新的配置: service squid restart
这里有更相信的acl访问控制说明:
Squidclient简要参数说明:
取得squid运行状态信息: squidclient -p 3180 -h 192.168.2.250 mgr:info
取得squid内存使用情况: squidclient -p 3180 -h 192.168.2.250 mgr:mem
取得squid已经缓存的列表: squidclient -p 3180 -h 192.168.2.250 mgr:objects
取得squid的磁盘使用情况: squidclient -p 3180 -h 192.168.2.250 mgr:diskd