用squid+iptables实现http代理


squid简介
    squid是一缓存internet数据饿软件,它接受用户的瞎子申请,并自动处理所下载的数据
也就是说,当一个用户要下载一个主页时,它向squid发吹个申请,要qsuid替他下载,然后
squid链接所申请网站给in并请求该主页,接着把该主页传给用户的同时保留一个备份
当别的用户申请同样的页面时,squid把保留的备份立即传给用户,使用户觉得速度相当快
    对于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查询的时间。
---------------------------------------------------------------------------------------------------------------------------

configure选项
--prefix=  安装位置   默认的是/usr/local/squid
--localstatedir =DIR        更改var的安装目录,默认的是/usr/local/squid/var
--sysconfdir =DIR           更改etc的安装位置,默认的是/usr/local/squid/etc

--enable-dlmalloc[=LIB]
在一些系统上,内建的内存分配机制(malloc)在使用squid时表现不尽人意。
使用--enable-dlmalloc选项将squid源代码包中的dlmalloc包编译和链接进来。
假如你的系统中已安装dlmalloc,你能使用=LIB参数指定库的路径

--enable-gnuregex
在访问控制列表和其他配置指令里,squid使用正则表达式作为匹配机制。
GNU的正则表达式库包含在squid的源代码包里;它可以在没有内建正则表达式的操作系统中使用
如果添加该选项,表示强制使用GNU正则表达式

--enable-async-io[=N_THREADS]
异步I/O是squid技术之一,用以提升存储性能。
该代码仅仅工作在linux和solaris系统中。
它等同于:
--with-aufs-threads=N_THREADS   
--with-pthreads  
--enable-storeio=ufs,aufs

--enable-storeio=LIST
Squid支持大量的不同存储模块。
在squid-2.5中,支持ufs,aufs,diskd,和null模块。
例如: ./configure --enable-storeio=afus,diskd,ufs

--with-aufs-threads=N_THREAD
指定aufs存储机制使用的线程数量
aufs存储模块是squid中唯一需要使用线程的部分
squid默认根据缓存目录的数量,自动计算需要使用多少线程。


--enable-removal-policies=LIST
排除策略是squid需要腾出空间给新的cache目标时,用以排除旧目标的机制
LRU是默认的,它以双链表数据结构执行。GDS和LFU使用堆栈的数据结构。
最少近期使用(LRU),贪婪对偶大小(GDS),最少经常使用(LFU)
--enable-removal-policies=heap    --enable-removal-policies=heap,lru

--enable-icmp
squid能利用ICMP消息来确定回环时间尺寸,非常象ping程序

--enable-useragent-log
该选项激活来自客户请求的HTTP用户代理头的日志

--enable-snmp
简单网络管理协议(SNMP)是监视网络设备和服务器的流行方法。
该选项导致编译过程去编译所有的SNMP相关的代码

--enable-cachemgr -hostname[=hostname]
cachemgr是一个CGI程序,你能使用它来管理查询squid。
默认cachemgr的hostname值是空的,但你能使用该选项来指定一个默认值。
例如:
./configure --enable-cachemgr-hostname=mycache.myorg.net

--enable-htcp
HTCP是超文本缓存协议--类似于ICP的内部缓存协议

--enable-ssl
使用该选项赋予squid终止SSL/TLS连接的能力。注意这仅仅工作在web加速器中用以加速请求

--with-openssl[=DIR]
假如必要,你使用该选项来告诉squid到哪里找到OpenSSL库或头文件。
假如它们不在默认位置,在该选项后指定它们的父路径
例如:
% ./configure --enable-ssl --with-ssl= /usr/lib/openssl

   
--enable-poll
unix提供两个相似的函数用以在I/O事件里扫描开放文件描述符:select()和poll()./configure脚本通常能非常好的计算出何时使用poll()来代替select().假如你想强制使用poll(),那么指定该选项。
--desable-poll
类似的,如果不使用poll(),那么指定该选项。

--enable-linux-netfilter
Netfilter是linux 2.4系列内核的包过滤器名字。
假如你想在linux2.4或以后的版本中使用HTTP拦截功能,那么激活该选项。

--enable-auth[=LIST]
假如你使用不带参数的--enable-auth选项,编译进程将增加对所有验证机制的支持
假如你忽略该选项,squid仅仅支持basic验证。
你能选择下列机制的任意组合:basic,digest,ntlm

--disable-internal-dns
squid源代码包含两个不同的DNS解决方案,叫做“内部的”和“外部的”
内部查询是默认的,但某些人可能要使用外部技术
内部查询使用 squid自己的DNS协议执行工具。也就是说,squid产生未完成的DNS查询并且将它们发送到一个解析器

---------------------------------------------------------------------------------------------------------------------------

实现目的:
把客户端web请求重定向到代理服务器的代理端口(3128),结合iptables实现访问国外网站的需求
---------------------------------------------------------------------------------------------------------------------------

硬件要求:
Squid对硬件的要求是内存一定要大,不应小于128M,硬盘转速越快越好,最好使用服务器专用SCSI 硬盘,处理器要求不高,400MH以上既可

---------------------------------------------------------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值