Squid是针对WEB客户机的高性能代理缓冲服务器,其作用是加快INTERNET的访问速度,同时为WEB服务器提供安全机制.
一.安装Squid软件包.
可看到已经安装好了.
二.Squid.conf文件详解和常用配置.
下面看下部分重要的设置.由于文件内容太多.
设置端口:
#Default:
# http_port 3128 //浏览器连接到本Proxy Server时所用的端口,可修改.
# http_port 3128 //浏览器连接到本Proxy Server时所用的端口,可修改.
Cache选项设置
# maximum_object_size 4096 KB
#Default:
# minimum_object_size 0 KB
#Default:
# maximum_object_size_in_memory 8 KB //内存中最大的对象大小
#Default:
# ipcache_size 1024 //IP对应cache的大小
# ipcache_low 90
# ipcache_high 95
#Default:
# minimum_object_size 0 KB
#Default:
# maximum_object_size_in_memory 8 KB //内存中最大的对象大小
#Default:
# ipcache_size 1024 //IP对应cache的大小
# ipcache_low 90
# ipcache_high 95
#Default:
# fqdncache_size 1024 //域名全称CACHE的大小
# fqdncache_size 1024 //域名全称CACHE的大小
#Default:
# cache_replacement_policy lru //CACHE替换策略
# cache_replacement_policy lru //CACHE替换策略
#Default:
# memory_replacement_policy lru 内存替换策略
# memory_replacement_policy lru 内存替换策略
#Default:
# cache_dir ufs /var/spool/squid 100 16 256 //存放路径大小和具体配置
# cache_dir ufs /var/spool/squid 100 16 256 //存放路径大小和具体配置
dns_nameservers xxxx.xxxx.xxxx.xxxx//内部指定DNS服务器
authenticate_program xxxx具//身份认证程序
authenticate_children 32 //身份认证程序启动的进程数目
request_body_max_size 5MB //最大请求的BODY大小
reply_body_max_size 20MB
#cache_mem 85MB //设置PROXY SERVER可使用多少内存作为高速缓存,一般要设置为物理内存的1/3
cache_swap_low 80
cache_swap_high 97 //这两行设置CACHE进行替换的闸值,当占用到97%的CACHE后,CACHE中的内容将被清空20%
#cache_dir ufs /var/spool/squid 100 16 256 //设置高速缓存目录和高速缓存可以使用的硬盘空间,100表示最大可使用100MB,16表示第一层子目录最多可以有16个,256表示每个第一层子目录下最多可以有256子目录
设置日志文件存储路径
# cache_access_log /var/log/squid/access.log //设置高速缓存存取记录文件的名称和所在目录,它记录了所有高速缓存的行为,如果不需要,可以设为"cache_access_log/dev/null"
#Default:
# cache_log /var/log/squid/cache.log //设置缓存存储记录文件的名称和所在目录,它记录了哪些数据从高速缓存移出,哪些数据被放入高速缓存
# cache_log /var/log/squid/cache.log //设置缓存存储记录文件的名称和所在目录,它记录了哪些数据从高速缓存移出,哪些数据被放入高速缓存
#Default:
# cache_store_log /var/log/squid/store.log //设置store.log文件存放的位置,access.log,cache.log,store.log等文件会越来越大,用户最好定期备份和删除,或者将它们都关闭
# cache_store_log /var/log/squid/store.log //设置store.log文件存放的位置,access.log,cache.log,store.log等文件会越来越大,用户最好定期备份和删除,或者将它们都关闭
#reference_age 2 month //设置高速缓存中的数据可保存多久,这里我们设置为7天,若是天内没有存取过该数据,则访数据会被删除
Cache_mgr root//设置SQUID出现问题时,系统将给ROOT发送E-MAIL
多级缓存设置
# proxy icp
#hostname type port port options
#cache_peer parent.linux.net parent 3128 3130 [proxy-only]
#cache_peer sib1.linux.net sibling 3128 3130 [proxy-only]
#cache_peer sib2.linux.net sibling 3128 3130 [proxy-only]
//这里可以进行多级缓存设置,设置PARENT和SIBING PROXY SERVER的网址,端口和功能.OPTION的PROXY-ONLY表示不保存取回的数据,如此可节省硬盘空间,除非硬盘大小或者是与其它PROXY SERVER之间的网络不够快,否则不建议这样做.
设置可以查询的主机或域
# cache_peer_domain cache-host domain [domain ...]
# cache_peer_domain cache-host !domain
# cache_peer_domain parent.foo.net .edu
# cache_peer_domain cache-host !domain
# cache_peer_domain parent.foo.net .edu
#cache_host_domain 202.198.32.3 !.tw !hinet.net//设置SQUID可以查询的PROXY SERVER所在的主机或域,如果是禁止查询,则在前面加上"!"
#acl aclname acltype string/file
# acl aclname time [day-abbrevs] [h1:m1-h2:m2]
# day-abbrevs:
# S - Sunday
# M - Monday
# T - Tuesday
# W - Wednesday
# H - Thursday
# F - Friday
# A - Saturday
# h1:m1 must be less than h2:m2
# day-abbrevs:
# S - Sunday
# M - Monday
# T - Tuesday
# W - Wednesday
# H - Thursday
# F - Friday
# A - Saturday
# h1:m1 must be less than h2:m2
这段语句指明要访问的时间,字母代表周日到周六
设置禁止访问某些站点.
#acl all src 0.0.0.0/0.0.0.0
#acl manager proto cache_object
#acl localhost src 127.0.0.1/255.255.255.255
#acl to_localhost dst 127.0.0.0/8
#acl SSL_ports port 443 563
#acl Safe_ports port 80 # http
#acl Safe_ports port 21 # ftp
#acl Safe_ports port 443 563 # https, snews
#acl Safe_ports port 70 # gopher
#acl Safe_ports port 210 # wa
#acl manager proto cache_object
#acl localhost src 127.0.0.1/255.255.255.255
#acl to_localhost dst 127.0.0.0/8
#acl SSL_ports port 443 563
#acl Safe_ports port 80 # http
#acl Safe_ports port 21 # ftp
#acl Safe_ports port 443 563 # https, snews
#acl Safe_ports port 70 # gopher
#acl Safe_ports port 210 # wa
acl flag src 192.168.5.0 //加上这一行,定义所有来自192.168.5.*访问PROXY SERVER的连接称为FLAG
设置可以连接的端口
#http_access allow manager localhost
#http_access deny manager
#http_access deny !Saft_ports
#http_access deny CONNECT !SSL_ports
http_access allow flag
http_access deny all
//这一部分设置访问控制,也就是设置哪些情况下可以连接,哪些情况下不可以连接.
其它项目设置
icp_access allow* //允许CACHE_PEER使用ICP协议访问
proxy_auth_realm BJPU proxy-caching web server期间 //验证框提示的BANNER
cache_mgr [email][email protected][/email] cache//管理员的电子邮件地址
cache_effective_user*
cache_effective_group*//执行CACHE程序的用户UID和GID
visible_hostname cnproxy.bjpu.edu.cn.cache//服务器的机器名
memory_pools on//内存池设置为打开
memory_pools_limit 50 MB//内存池大小
三,Squid Server 配置实例.
在前面加上IP地址,Squid 就不会监听外部的网络接口
2.建立转换目录.
squid
服务器的初始化
当我们第一次使用 squid 服务器之前需要先使用 squid -z 命令对 squid 服务器进行初始化
# ls /var/spool/squid
# squid -z
注意:如果初始化成功的话,会显示: 2008/06/20 15:07:51| Creating Swap Directories
当我们第一次使用 squid 服务器之前需要先使用 squid -z 命令对 squid 服务器进行初始化
# ls /var/spool/squid
# squid -z
注意:如果初始化成功的话,会显示: 2008/06/20 15:07:51| Creating Swap Directories
如果显示的是这样的信息的话:
FATAL: Could not determine fully qualified
hostname. Please set 'visible_hostname'
Squid Cache (Version 2.5.STABLE6): Terminated abnormally.CPU Usage: 0.064 seconds = 0.008 user + 0.056 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 0
Aborted
我们需要在主配置文件中添加一行:
# vi /etc/squid/squid.conf
visible_hostname squid // 其中 squid 为你当前主机的名称
保存退出后,再次执行 squid -z 就可以了。
# ls /var/spool/squid
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
启动
squid
服务
# service squid start
Starting squid: . [ OK ]
# service squid start
Starting squid: . [ OK ]
在/var/spool/squid目录中可看到00-0F等16个子目录,在这些目录中又各有00-0F等256个子目录.SQUID SERVER的高速缓存文件就存放在这些目录中.
3.配置客户端通过代理服务器上网.
1)在IE浏览器中设置.
点局域网设置.
2)在mozilla浏览器中设置.
在"首选项"选择.
四.
配置透明代理服务器
构建透明代理服务器需要对
squid
代理服务和
iptables
防火墙分别进行设置,配合使用才能实现透明代理的功能。
在
squid
服务器中默认是不支持提供透明代理服务的相关功能的,因此我们需要在配置文件中进行如下配置:
# vi /etc/squid/squid.conf
// 在配置文件的尾部添加上下列行
# vi /etc/squid/squid.conf
// 在配置文件的尾部添加上下列行
http_port 192.168.1.254:8080
httpd_accel_host virtual//这行语句一定要加上
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
cache_effective_user nobody
http_access allow all
access_dir ufs /usr/local/squid/cache 100 16 256
重新启动服务
# service squid restart
Stopping squid: . [ OK ]
Starting squid: . [ OK ]
# service squid restart
Stopping squid: . [ OK ]
Starting squid: . [ OK ]
让系统启动时自动运行squid,
编辑/etc/rc.d/local文件,在文件末尾加上:
su nobody -c "usr/local/squid/bin/squid"
然后设置iptables
执行如下命令"
echo "1">/proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to a.b.c.d
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -J ACCEPT
其中EHT1 是内部网卡,ETH0是外部网卡,内网IP地址为192.168.1.0/23.ETH0对应的IP地址为218.198.67.10,ETH1对应的IP地址是192.168.1.254.
设置网关和DNS后就可在客户端直接上网了.
五.Squid Server的安全访问设置:
1)限制内网某些IP使用代理服务器.
要使用地址范围192.168.5.0到192.168.5.255来为局域网的系统定义oak acl条目,可使用下面的方法:
acl oak src 192.168.5.0/255.255.255.0
一旦定义地址范围以后,就可以使用SQUID SERVER选项中ACL定义对系统进行控制.例如,为了允许局域网系统中的OAK组通过代理访问WEB,可以用带ALLOW动作的http_access命令把oak指定为ACL定义.如下
http_access allow oak
下面的例子是只允许局域网的oak组通过代理访问WEB站点,而拒绝其它主机的访问,这里设置了两个ACL条目:一个用于本地系统,允许局域网的OAK访问,另一个用于拒绝其它主机的访问.如下:
acl oak src 192.168.5.0/255.255.255.0
acl all src 0.0.0.0/0.0.0.0
http_access allow oak
http_access deny all
2)限制内网某些MAC地址使用代理服务器.
例如下面:
acl advance arp 00:01:02:1f:2c:3e 00:01:02:3c:1a:8b...
3)限制内网用户访问某些网站
下面的例子是拒绝任何使用代理的用户访问主机nix.linux.com.如是所在的局域网计算机通过代理访问该主机,则可以使用这样的命令限制访问.
acl nic dst nic.linux.com
http_access deny nic
下面的是限制访问站点 [url]www.linux.com[/url]以及其它一切linux.com域中的主机.
acl center dstdomain .linux.com
http_access deny center
下面的例子是限制访问.linux.com 和.unin.com
acl xxk dstdomain .linux.com .unix.com
http_access deny xxk
如果要限制的网站很多,可以使用文件的方式:如
acl sexip dst "/etc/squid/acl/sexip"
acl sexweb dstdomain "/etc/squid/acl/sexweb"
http_access deny sexip
http_access deny sexweb
然后把要控制的站点的IP地址和域名存放在相应的文件中,例如gedit编辑/etc/squid/acl/sexweb文件,把下面的一些站点添加进去:
.xxxhu.com
.sexhu.com
...
4)限制内网用户访问某些格式的文件.如下:
acd xfile urlpath_regex \.mp3$ \.avi$ \.exe$
http_access deny xfile
当然,我们也可以指定有些特定用户可以访问这些文件类型,方法如下:
acl myhost src 192.168.1.18 192.168.5.10
acl xfile urlpath_regex \.mp3$ \.avi$ \.exe$
http_access allow myhost xfile
http_access deny xfile
5)限制内网用户使用代理服务器的时间
axcl myhost src 192.168.1.18 192.168.5.10
acl all src 192.168.1.0/24 192.168.5.0/24
acl worktime time MTWHF 8:00-12:00 14:00-18:00
acl alltime time SMTWHFA 0:00-24:00
http_access allow myhost alltime
http_access allow all worktime
http_access deny worktime
6)控制内网用户使用代理服务器的并发连接数.
acl conncount maxconn 3
http_access deny conncount normal
http_access allow normal
结束...