泉源:网海拾贝
作为一种收费的收集把持琐细,Linux越来越遭到宽大年夜收集爱好者的欢送,目前Internet上运转的主机有相当一部门回收的便是Linux,并且中国曾经把Linux作为政府上彀的指定收集把持琐细。种种迹象表明,Linux正在慢慢走向成熟。
为见识决Internet发展矫捷和IP地点资源严重的抵牾,代理效劳器的运用越来越普遍。Squid是一种在Linux琐细下运用的对照良好的代理效劳器软件。
代理效劳
代理效劳是指由一台拥有标准IP地点的板滞替代多少没有标准IP地点的板滞和Internet上的此外主机打交道,供给代理效劳的这台板滞称为代理效劳器。拥有外部地点的板滞想毗邻到Internet上时,先把这个央求发给拥有标准IP地点的代理效劳器,由代理效劳器把这个央求颠末它的标准IP地点发到央求的目的地点。然后目的地点的效劳器把前往的终局发回给代理效劳器,代理效劳器再原封不动的把质料发给外部主机。多少拥有外部地点的板滞就组成了外部网,代理效劳器的作用便是沟通外部网和Internet,治理外部网造访Internet的标题问题。这种代理事不成逆的,Internet上的主机不克不及造访任何一台拥有外部地点的板滞,如许又可以包管外部质料的安详性。
代理软件的一个利益是它可以磨练除了数据包之外的很多东西。Squid对数据包的有效载荷举办磨练,也便是穿越防火墙的数据包中TCP(概略UDP)部门所占地份量。依据数据包报头(数据包中的IP部门)和数据包有效载荷(TCP部门)的信息,代理防火墙可以决意数据包将发往那边,数据包央求什么,以及依据数据包所必需供给的这些信息决意回收什么样的活动。
凑合Web用户来说,Squid是一个高性能的代理缓存效劳器,可以加快外部网阅读Internet的速度,行进客户机的造访掷中率。Squid不只撑持HTTP协议,还撑持FTP、gopher、SSL和WAIS等协议。和一样泛泛的代理缓存软件差别,Squid用一个单独的、非模块化的、I/O驱动的进程来处置惩罚全部的客户端央求。
Squid将数据元缓存在内存中,同时也缓存DNS查寻的终局,除此之外,它还撑持非模块化的DNS盘问,对失败的央求举办颓丧缓存。Squid撑持SSL,撑持造访控制。因为运用了ICP,Squid可以完成堆叠的代理阵列,从而最大年夜限制的糜费带宽。
Squid由一个主要的效劳轨范Squid,一个DNS盘问轨范dnsserver,几个重写请求和实行认证的轨范,以及几个治理东西组成。当Squid启动当前,它可以派生出指定命目的dnsserver进程,而每一个dnsserver进程都可以实行单独的DNS盘问,如许一来就大年夜大年夜增加了效劳器等候DNS盘问的时候。
Squid的另一个优胜性在于它运用造访控制清单(ACL)和造访权限清单(ARL)。造访控制清单和造访权限清单颠末停止特定的收集毗邻来增加窜伏的Internet非法毗邻,可以运用这些清单来确保外部网的主机无法造访有要挟的或不得当的站点。
编译安置Squid
squid软件包有两种:一种是RedHat所运用的rpm包,另一种是源代码包。
rpm包的安置:
1.进入/mnt/cdrom/RedHat/RPMS。
2.实行rpm -ivh squid-2.2.STABLE4-8.I386.rpm。
源代码包的安置:
1.从http://www.squid-cache.org下载squid-2.2.STABLE4-src.tar.gz。
2.将该文件拷贝到/usr/local目次。
3.解开该文件tar xvzf squid-2.2.STABLE4-src.tar.gz,在/usr/local目次下生成一个新的目次squid-2.2.STABLE4,为了任意运用mv squid-2.2.STABLE4 squid将目次改名为squid。。
4.进入squid目次。
5.实行./configure,可以用./configure -prefix=/directory/you/want指定安置目次。琐细默许安置目次为/usr/local/squid。
6.实行make all。
7.实行make install。
8.安置终了后,Squid的可实行文件在安置目次的bin子目次下,设置文件在etc子目次下。
设置squid
设置文件squid.conf
Squid有一个主要的设置文件squid.conf,位于/etc/squid目次下,用户仅仅须要删改该设置文件即可。
squid.conf设置文件分为13个部门,离散是:
1.NETWORK OPTIONS(有关的收集选项)
2.OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM(作用于邻人选择算法的有关选项)
3.OPTIONS WHICH AFFECT THE CACHE SIZE(定义cache大小选项)
4.LOGFILE PATHNAMES AND CACHE DIRECTORIES(定义日记文件的途径及cache的目次)
5.OPTIONS FOR EXTERNAL SUPPORT PROGRAMS(外部撑持轨范选项)
6.OPTIONS FOE TUNING THE CACHE(调整排遣cache选项)
7.TIMEOUTS(超时)
8.ACCESS CONTROLS(造访控制)
9.ADMINISTRATIVE PARAMETERS(治理参数)
10.OPTIONS FOR THE CACHE REGISTRATION SERVICE(cache注册效劳选项)
11.HTTPD-ACCELERATOE OPTIONS(HTTPD加速选项)
12.MISCELLANEOUS(杂项)
13.DELAY POOL PARAMETERS(延时池选项)
虽然squid的设置文件很重大年夜,然则用户可以依据本人的幻想状况删改相应的选项,并不须要设置全部的选项。上面引见几个常用的选项。
1.http_port
定义squid监听HTTP客户毗邻央求的端口。缺省是3128,要是运用HTTPD加速方式则为80。可以指定多个端口,然则全部指定的端口都必需在一条饬令行上。
2.cache_mem
指定squid可以运用的内存幻想值,创议设为内存的1/3.
3.cache_dir Directory-Name Mbytes Level1 Level2
指定squid用来存储东西的交流空间的大小及其目次结构。可以用上面的公式来预算琐细所须要的子目次数量。
已知量:
DS = 可用交流空间总量(单元KB)/ 交流空间数量
OS = 均匀每个东西的大小= 20k
NO = 均匀每个二级子目次所存储的东西数量 = 256
未知量:
L1 = 一级子目次的数量
L2 = 二级子目次的数量
计算公式:
L1 x L2 = DS / OS / NO
注意这是个不定方程,可以有多个解。
4.maximum_object_size
大年夜于该值得东西将不被存储。要是要行进造访速度,就高涨该值;要是想最大年夜限制的糜费带宽,高涨成本,就添加该值。
5.dns_nameservers
定义Squid举办域名答理时运用的域名效劳器。
6.acl
定义造访控制列表。定义语法为:
acl aclname acltype string ...
acl aclname acltype "file" ...
7.http_access
依据某个造访控制列表容许或克制某一类用户造访。
运转Squid
设置并保留好squid.conf后,就可以启动、停止和从新启动Squid:
/etc/rc.d/init.d/squid start
/etc/rc.d/init.d/squid stop
/etc/rc.d/init.d/squid restart
可以颠末ps饬令查察Squid效劳可否曾经正常启动:
ps -A |grep squid
要是出现以下信息:
6573 ? 00:00:00 squid
6574 ? 00:00:00 squid
则表明Squid效劳曾经正常启动。
客户真个设置
将某台终端设置成外部地点,并将该终真个DNS效劳器设置为代理效劳器的DNS效劳,在外部地点和标准地点之间作一个路由。在阅读器里设置代理效劳器地点为Squid代理效劳器的地点,就可以颠末代理效劳器上彀了。
一个实例
假定有如许的利用环境,收集中有一台拨号效劳器为用户供给拨号接入效劳,且运转有Squid完成的代理效劳器,其IP地点为192.168.2.32。拨号用户失失落一个外部IP,地点局限为192.168.2.1-192.168.2.30。
1.设置squid.conf
http_port 80
cache_mem 32 MB
cache_swap_low 90
cache_swap_high 95
maximum_object_size 4096 KB
cache_dir /var/spool/squid 100 16 256
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
cache_dns_program /usr/lib/squid/dnsserver
dns_nameservers 192.168.2.32
unlinkd_program /usr/lib/squid/unlinkd
acl all src 0.0.0.0/0.0.0.0
acl allow_ip src 192.168.2.1/255.255.255.0
acl manager proto cache_object
acl localhost src 192.168.2.32/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow allow_ip
cache_effective_user squid
cache_effective_group squid
上面两个选项是用来定义squid加速方式的。用virtual来指定为虚拟主机方式。80端口为要加速的央求端口。回收这种方式时,Squid就取消了缓存及ICP屈从,要是须要这些屈从,必需设置httpd_accel_with_proxy选项。
httpd_accel_host virtual
httpd_accel_port 80
上面两个选项在通明代理方式下是必需设置成on的。在该方式下,Squid既是web央求的加速器,又是缓存代理效劳器。
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
设置通明代理时,必需翻开包转发屈从,还要连系ipchains:
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/ipchains -A input -j ACCEPT -i lo
/sbin/ipchains -A forward -s 192.168.2.1/24 -d 0/0 -j MASQ
2.用户认证设置
默许时,Squid本人不带任何认证轨范,然则可以颠末外部认证轨范来完成用户认证。一样泛泛有以下的认证轨范:LDAP认证、SMB认证、基于mysql的认证、基于sock5的密码认证和基于Radius的认证。上面引见常用的ncsa完成的认证,ncsa是Squid源代码包自带的认证轨范之一,完成步调如下:
* 进入/usr/local/squid/auth_modules/NCSA目次,实行:
make
make install
* 编译乐成后,会生成ncsa_auth的可实行文件,拷贝生成的可实行文件到/usr/bin目次下。
* 删改squid.conf文件的相关选项。
acl auth_user proxy_auth REQUIRED
http_access allow auth_user
authenticate_program /usr/local/squid/bin/ncsa_auth
/usr/local/squid/etc/passwd
* 利用Apache携带的东西软件htpasswd在/usr/locad/squid/etc下生成密码文件,并添加相应的用户信息。该密码文件每行包括一个用户的信息,即用户名和密码。譬喻,用htpasswd生成密码文件passwd并添加用户me:
htpasswd -c /usr/local/squid/etc/passwd me
* 从新启动Squid,密码认证生效。
3.客户真个设置
在客户端阅读器的选项中将代理效劳器的IP地点设为192.168.2.32,http端口为80。若要设置通明代理,则客户端不须要在阅读器中指定代理效劳器,而将网关设为192.168.2.32,并且客户端要设置好DNS。
目下当今,外部网的主机就可以颠末代理造访Internet了。
终了语
Squid与Linux下此外的代理软件如Apache、Socks、TIS FWTK和delegate相比,下载安置大略,设置大略活络,撑持缓存和多种协议。用ipchains Squid的治理方案,就可以失失落颠末缓存高性能的同时可以无缝的造访Internet。末了声明一点,squid不只可用在Linux琐细上,还可以用在AIX、Digital Unix、FreeBSD、HP-UX、Irix、NetBSD、Nextstep、SCO和Solaris等琐细上。
版权声明:
原创作品,容许转载,转载时请务必以超链接情势标明文章 原始出处 、作者信息和本声明。否则将追查法律责任。