文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档> 内存缓冲的squid透明代理

内存缓冲的squid透明代理

时间:2006-07-27  来源:me09

内存缓冲的squid透明代理
***********************************************************
运行平台:RedFlag AS 4.1
硬件环境:具有双网卡的兼容PC
软件环境:squid-2.5
所需rpm包:squid-2.5STABLE3-5.3E.rpm(在RedFlag AS 4.1第二张安装光盘上\RedFlag\RPMS目录下)
***********************************************************
一、安装squid-2.5 :
groupadd squid
useradd -g squid squid
rpm -ivh squid-2.5.STABLE3-3.3E.i386.rpm
二、设计思想:
  做过squid代理服务器的朋友都知道,squid的缓冲目录是保存在硬盘上的,这样的话,当squid在读取缓存的时候硬盘会影响到速度。
  现在我们来做一个把缓存直接放在内存里的squid代理服务器,不用我说,你也能想象它的速度了吧?
这里先要介绍一下tmpfs虚拟文件系统:
我们在服务器上运行df命令时,一般会有以下这样的显示:
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/hda3 76312224 36446480 35989260 51% /
/dev/hda1 101089 9185 86685 10% /boot
none 26504 0 0 100% /dev/shm
请注意最后一行!!!
这就是一个tmpfs文件系统,它的默认大小是内存的一半。(我的机器只有64M,而且集成的显卡又吃掉了8M内寸,所以只显示有26504K大小)
  tmpfs 就象虚拟磁盘(ramdisk),但不一样。象虚拟磁盘一样,tmpfs 可以使用您的RAM,但它也可以使用您的交换分区来存储。而且传统的虚拟磁盘是个块设备,并需要一个 mkfs 之类的命令才能真正地使用它,tmpfs 是一个文件系统,而不是块设备。总而言之,这让 tmpfs 成为我有机会遇到的最好的基于 RAM 的文件系统。

三、修改配置:
  接下来要做的事情极其简单,我们改一下squid的配置,把默认的缓存目录设置在/dev/shm里就行了。
修改/etc/squid/squid.conf 文件,改成这样:
cache_dir ufs /dev/shm/squid 20 4 16
注释:默认的缓存目录设置在/dev/shm/squid目录,大小为20M,
注意,不要超过/dev/shm文件系统的大小。

cache_access_log none
cache_log /dev/null
cache_store_log none
注释:以上三行关闭了squid的日志记录,以节省磁盘空间和提高一点速度

acl share src 192.168.0.0/255.255.255.0
http_access allow share
注释:增加一个名为share的acl控制,指定192.168.0.0的子网段,并允许该网段透过squid。

httpd_accel_port 80
httpd_accel_host virtual
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
注释:以上四句是用来和iptables配合,做透明代理用的,这样子网里的客户机不需要一台台地去改IE浏览器的设置了。
保存完配置文件就OK了。
四、启动、测试:
现在我们来启动squid:
先squid-z一下, 这是命令squid生成缓存的目录结构。执行完以后我们可以看到/dev/shm下已经多了squid目录了。
  然后运行/etc/init.d/squid start 启动squid;
  最后运行一句:
iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.0.0/24 --dport 80 -j DNAT --to 192.168.0.1:3128
注 释:这是把客户机的web访问转发到squid的服务端口3128上,这样子网里的客户机不需要一台台地去改IE浏览器的设置了。eth1是linux 服务器连接子网交换机的那块网卡,注意不要搞错了哦,不是其他网卡哦。192.168.0.0是子网客户机的网段,192.168.0.1是linux服 务器的IP。
说的仔细点:把来自网卡eth1的IP范围为192.168.0.1-192.168.0.254、子网掩码为255.255.255.0的客户机对80端口的访问转发到192.168.0.1的3128端口上;

好了,现在我们可以到子网里的客户机上去测试了,客户机的IE浏览器不需要设置代理服务器,只要把网关设置成linux服务器就可以了。是不是可以上网了?速度如何?

还有最后一点也非常重要:
用ntsysv取消squid前面的勾,在/etc/rc.d/rc.local里加上两句:
squid -z
/etc/init.d/squid start
这 是因为tmpfs文件系统是易失性的,在重新启动以后RAM里的东东会全部消失,/dev/shm/squid也就没有了。而squid要求在运行前必须 先建立缓存目录。要解决这个问题,我们就先取消squid的自动启动,然后把squid的启动挪到rc.local里来执行。

其他事项:
1、squid有很多参数可以修改,本文只介绍了与缓存目录和作透明代理有关的参数,其他的你可以根据需要自己修改;
2、squid依靠服务器上设置的DNS来进行IP解析,而不是由客户机来解析,你需要正确设置服务器,可以修改/etc/resolv.conf;在服务器上安装cache-only型的DNS服务器也能加速squid的IP解析速度;
3、在设置缓存目录大小时如果超过了tmpfs的大小,仍然能够运行,不过tmpfs会对超过的部分使用硬盘上的交换分区,这样的话就得不偿失了。
4、iptables的语句没有运行的话你将不能使用到透明代理的功能,你还是需要修改客户机的IE设置,在里面指定代理服务器为192.168.0.1,端口33128。
5、 在使用squid的时候注意内存的使用情况。squid在运行时候把最近使用过的网页保存在内存里的,因此除了缓存我们现在使用了内存,squid本身也 大量使用内存。cache_mem 这个参数就是用来控制内存使用量的。它的大小在通常情况下应小于内存的1/3;而在我们这个方案中,由于tmpfs占掉了内存的一半,cache_mem 的大小应该不大于实际内存的1/6。超过的话有可能出现硬盘交换分区被读写,有了硬盘读写性能就会有所下降了。
6、这个示例里只用了一句 iptables语句,在实际使用中你可能还需要定义其他iptables规则,比如iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT。而对使用Quick AS3的用户来说,AS3 自带的/sbin/firewall文件以包含了这些规则,你只要把iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.0.0/24 --dport 80 -j DNAT --to 192.168.0.1:3128这一句插到firewall文件中适当的位置就可以了。
***************************************************
##/etc/rc.local
###################
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

echo 1 >/proc/sys/net/ipv4/ip_forward

modprobe ip_tables
modprobe ip_nat_ftp
/sbin/iptables -F -t nat
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

chmod 777 /dev/shm/squid
squid -z

/etc/init.d/squid start
***************************************************                      
实验、整理: 李 冉
公元二00四年十一月十六日
            于中科院西安分院网络中心Linux基地
相关阅读 更多 +
排行榜 更多 +
木雕高高手中文版

木雕高高手中文版

休闲益智 下载
我不是飞剑安卓版

我不是飞剑安卓版

休闲益智 下载
愤怒的小鸟梦幻爆破安卓最新版

愤怒的小鸟梦幻爆破安卓最新版

休闲益智 下载