孙莉娜
(辽宁机电职业技术学院 辽宁 118009)
Squid是一个高性能的代理缓存服务器,可以加快内网浏览Internet的速度,提高客户机访问命中率。Squid与Linux下其它的代理软件如Apache、Socks、TIS FWTK和delegate相比,下载安装简单,配置简单灵活。它不仅支持HTTP协议,还支持FTP、gopher、SSL和WAIS等协议。Squid不仅可以用在Linux系统上使用,还可以用在AIX、Digital Unix、FreeBSD、HP-UX、Irix、NetBSD、Nextstep、SCO和Solaris等系统上。Squid由一个主要的服务程序 Squid,一个 DNS查询程序dnsserver,多个重写请求、执行认证程序和管理工具组成。Squid使用访问控制清单(ACL)和访问权限清单(ARL)阻止特定的网络连接来减少潜在的Internet非法连接。
下面探讨RHEL5配置Squid服务器的方法。首先引入任务:某公司要搭建一台Squid代理服务器(IP为192.168.53.188),需要提高内网访问互联网速度,并且能够对内部员工的上网行为进行限制,采用 squid代理服务器软件,对内部网络进行优化。具体完成步骤如下:
步骤一:设置网卡IP地址eth0为192.168.53.188,netmask为255.255.255.0,eth1为dhcp方式获取。在/etc/sysconfig/network-scr ipts/ifcfg-eth0文件和/etc/sysconfig/network-scripts/ifcfg-eth1文件中,设置修改相应信息。
步骤二:开启内核路由功能,输入命令:echo 1 > /proc/sys/net/ipv4/ip_forward,并查看结果。
步骤三:配置iptables设定NAT为透明代理,输入命令:
iptables-t nat-A PREROUTING-i eth0-p tcp——dport 80-j REDIRECT——to-ports 3128
如果只设置下面一句而上面一句不设置,客户端也可以上网,只是不通过squid。
iptables-t nat-A POSTROUTING-o eth1-j MASQUERADE
而后保存iptables设置,输入service iptables save。
步骤四:输入 getsebool –a | grep squid进行查询,如果squid_disable_trans没有开启,则squid不能启动,也就不能配置 squid 透明代理。需要输入命令:setsebool-P squid_disable_trans on。
步骤五:添加squid系统用户和组,输入命令:
groupadd squidadmin
useradd squidadm in-g squidadm in-s /sbin/nologin
建立以下目录:/usr/local/squid,/usr/local/squid/cache,/usr/local/squid/var,/usr/local/squid/var/logs,为了保证服务正常启动并可以写入缓存、日志等信息,需要改变以上目录的所有者为squidadm in。
步骤六:修改squid配置文件/etc/squid/squid.conf,
(1)设置监听地址和端口http_port 3128 transparent,红色部分是支持透明代理,这是squid新版本的改进。
(2)squid将所有的 UDP绑定到指定的网络接口,ip-address必须对应于系统的网络接口,默认设置为0.0.0.0。即udp_incom ing_address 0.0.0.0。
(3)设置squid内存大小及cahce目录,修改参数为:
cache_mem 512 MB
cache_dir ufs /usr/local/squid/cache 10240 16 256 #代表缓存位置、最大缓存空间(这里磁盘缓存大小是10G)和一级、二级目录数。
(4)设置日志文件和pid文件位置,修改参数为:
access_log /usr/local/squid/var/logs/access.log
cache_log /usr/local/squid/var/logs/cache.log
cache_store_log none #不记录store.log
emulate_httpd_log on #为使Squid按照Web服务器的格式创建访问记录进行程序分析
pid_filename /usr/local/squid/var/logs/squid.pid
(5)开始配置访问控制选项,首先设置运行时的用户和组权限,
acl all src 0.0.0.0/0.0.0.0
acl mynet src 192.168.53.0/255.255.255.0
http_access allow mynet
http_access deny all
然后设置squid进程所有者和squid进程所属组
cache_effective_user squidadmin
cache_effective_group squidadm in
(6)设置管理信息,设置 squid可见主机名,visible_hostname 192.168.53.188,
(7)进行swap性能微调,修改以下参数:
half_closed_clients off
cache_swap_low 80
cache_swap_high 100
maximum_object_size 1024 KB
squid配置逻辑是自上而下,满足条件即不再和下面匹配。
最后检查squid.conf配置文件,squid-k parse。以上完成squid配置文件的修改过程。
步骤七:squid服务初始化,在第一次启动squid服务之前,要使用squid-z命令在硬盘缓存中建立cache目录,或者重新设置了 cache_dir字段的值之后也要使用此命令来重新建立硬盘缓存目录,注意在cache目录激活后不要改变L1和L2的值。
步骤八:最后启动squid服务,service squid start;也可以通过命令squid-D检查squid服务有没启动进行测试,而客户端只要设置IP地址、子网掩码、网关及DNS就可以直接上网。
此外还可以使用acl和http_access deny组合来禁止指定IP、指定网段、屏蔽访问指定网站及指定固定时间上网,举例如下:
(1)拒绝192.168.52.0网段的客户机访问互联网请求:
acl client1 src 192.168.52.0/255.255.255.0
http_access deny client1
(2)拒绝用户访问域名为www.baidu.com的网站请求:
acl baddomain dstdomain www.baidu.com
http_access deny baddomain
(3)禁止192.168.52.0网段的客户机周一至周五工作时间访问互联网:
acl client1 src 192.168.52.0/255.255.255.0
acl badtime time MTWHF 9:00-18:00
http_access deny client1 badtime
(4)禁止用户下载*.mp3、*.exe、*.zip和*.rar类型的文件:
acl badfile urlpath_regex –i .mp3$.exe$.zip$.rar$
http_access deny badfile