《代理服务器和透明代理.docx》由会员分享,可在线阅读,更多相关《代理服务器和透明代理.docx(5页珍藏版)》请在优知文库上搜索。
1、一、什么是代理服务器?所谓代理服务器是指代表内部私有网中的客户连接互联网WWW资源的外部服务器的程序。客户与代理服务器对话,它们接收客户恳求,然后连接真实的服务器,恳求得到数据并将响应数据返回给客户。代理服务器发挥了中间转接作用。在代理方式下,私有网络的数据包从来不能直接进入互联网,而是需要经过代理的处理。同样,外部网的数据也不能直接进入私有网,而是要经过代理处理以后才能到达私有网,因此在代理上就可以进行访问掌握,地址转换等功能。目前,代理服务器软件有许多,如NetSCaPeSuitProxy,MSProxy,Wingate,squid等。这些代理服务器不仅能起到防火墙的作用,而且还可以加速局
2、域网用户对INTERNET的访问,由于代理服务器有一个大的缓冲器,将每次扫瞄的网页都保存起来,在下一次访问该页时就直接从缓冲器里调出,而无需再次访问原始服务器。二、什么是透亮代理?透亮代理技术中的透亮是指客户端感觉不到代理的存在,不需要在扫瞄器中设置任何代理,客户只需要设置缺省网关,客户的访问外部网络的数据包被发送到缺省网关,而这时缺省网关运行有一个代理服务器,数据实际上被被重定向到代理服务器的代理端口(如8080),即由本地代理服务器向外恳求所需数据然后拷贝给客户端。理论上透亮代理可以对任何合同通用。客m机服奂部女群的连镂A逑觉到的连楼但是在这种状况下客户端必需正确设置DNS服务器。由于现在
3、扫瞄器不设置任何代理。则DNS查询必需由browser来解析,也就是要由客户端必需在TCP/IP中设置的正确的DNS服务器,其完成dns解析。例如:从私有网络上访问因特网上的web站点。私有网地址为192.168.1.*,其中客户机是192.168.1.100,防火墙机器网卡是192.168.Llo透亮web代理被安装在防火墙机器上并配置端口为8080O内核使用iptables把与防火墙端口80的连接重定向到代理服务。私有网上的Netscape被配置为直接连接方式。私有网络的客户机需要设置DNS服务器。私有网络上机器的默认路由(别名网关)指向防火墙机器。客户机机器上的Netscape访问htt
4、p:/slashdot.org.1 .Netscape通过查找slashdot.orgw,得到它的地址为207.218.152.131.然后它使用端口1050与此地址建立一个连接,并向web站点发出恳求。2 .当包由客户机(port1050)通过防火墙送往SlaShdOt.org(port80)时,它们重定向到代理服务重定的8080端口。透亮代理使用端口1025与207.218.152.131的端口80(这是原始包的目的地址)建立一个连接。3 .当代理服务收到从web站点传来的页面后,通过已经建立的连接把它复制给Netscapeo4 .Netscape显示此页面。5 .从SlaShdot.or
5、g的角度来看,连接是由.4(防火墙的拨号连接IP地址)的端1025到207.218.152.131的端口80。从客户机的角度来看,连接是从192.168.1.100(客户机)端口1050连接到207.218.152.131(SlaShdot.org)的端口80,但是,它实际是在与透亮代理服务器对话。这就是透亮代理的操作流程。三、内核编译一般来讲,透亮代理所在机器往往是带动整个局域网联入互联网的入口,因此该机器往往需要配置防火墙规章以对内部网络进行防护。因此在编译内核时或许要考虑将防火墙支持选项编译进去。一般来说需要在使用makemenuconfig命令配置时打开如下选项:*NfASQUERAD
6、Etargetsupport*REDIRECTtargetsupport*Packetmangling*TOStargetsupport*MARKtargetsupport*LOGtargetsupport然后makedep;makeclean;makebzlmage命令来编译内核。假如使用到了模块,还需要使用下面命令生成和安装模块makemodules;makemodules-instal10将System,map复制到/boot名目中,将usrsrclinuxarchi386bootbzlmage复制到/boot名目中并改名为vmlinuz-o最终安装新内核并重新起动:Iilo;shutd
7、own-rnow即可。四、SqUid的安装配置下载:可以从squid主网站下载:也可以从本地下载:编辑安装:(全部的httpaccess命令都注释掉,只留下这条,其实严格上来说应当限制只允许局域网用户使用代理,详细可以参考SqUid手册中关于ACCCSSContrOlLiStS的内容来限制访问代理)CaCheCIirUfSusrlocalSqUid/cache10016256CaChedirtypeDireCtOry-NameMbyteSLeVel-ILeVeI2(说明:指定SQUid用来存储对象的交换空间的大小及其名目结构。可以用多个CaChedir命令来定义多个这样的交换空间,并且这些交换
8、空间可以分布不同的磁盘分区。directory”指明白该交换空间的顶级名目。假如你想用整个磁盘来作为交换空间,那么你可以将该名目作为装载点将整个磁盘mount上去。缺省值为varspoolSqUidoMbytes”定义了可用的空间总量。需要留意的是,SqUid进程必需拥有对该名目的读写权力。LeVeIT”是可以在该顶级名目下建立的第一级子名目的数目,缺省值为16。同理,LeVeI-2是可以建立的其次级子名目的数目,缺省值为256。为什么要定义这么多子名目呢?这是由于假如子名目太少,则存储在一个子名目下的文件数目将大大增加,这也会导致系统查找某一个文件的时间大大增加,从而使系统的整体性能急剧降低
9、。所以,为了削减每个名目下的文件数量,我们必需增加所使用的名目的数量。假如仅仅使用一级子名目则顶级名目下的子名目数目太大了,所以我们使用两级子名目结构。那么,怎么来确定你的系统所需要的子名目数目呢?我们可以用下面的公式来估丸已知量:DS二可用交换空间总量(单位KB)/交换空间数目OS二平均每个对象的大小二20kNO二平均每个二级子名目所存储的对象数目二256未知量:1.I二一级子名目的数量1.2二二级子名目的数量计算公式:查看进程列表:rootiptablelogs#PSax应当消失如下几个进程:1372pts0S0:00binshusrlocalSqUidbinRunCache1375pts
10、0S0:OOSqUid-NSY1376?S0:00(UnIinkd)并且系统中应当有如下几个端口被监听:rootProXylogs#nctstat-Intcp000.0.0.0:31280.0.0.0:*LISTENUdP000.0.0.0:31300.0.0.0:*这些说明SqUid已经正常启动了。然后etcrc.drc.IoCaI文件最终添力口usrlocalSQUidbinRunCache&以使得系统启动时自动启动SqUid服务器。五、iptables的设置在etcrc.d/名目下用touch命令建立firewall文件,执行ChmodU+xfirewl1以更改文件属性,编辑etcrc.
11、drc.local文件,在末尾加上etcrc.d/firewa以确保开机时能自动执行该脚本。firewall文件内容为:#!/bin/shecho“Startingiptablesrules”#Refr。ShallChainSsbiniptables-FiptablesT-APREROUTING-ieth-Dtcp-mtcp-dport80-REDIRECT-to-ports3128假如需要还可以添加一些防火墙规章以增加平安性,详细参考:*Networkingsupport*Sysctlsupport*Networkpacketfiltering*TCP/IPnetworking*procfi
12、lesystemsupport*Kernel/Usernetlinksocket*Netlinkdeviceemulation*Connectiontracking(requiredformasq/NAT)*FTPprotocolsupport*IPtablessupport(requiredforfi11ering/masq/NAT)limitmatchsupport*MACaddressmatchsupport*NetfilterMARKmatchsupport*Multipleportmatchsupport*TOSmatchsupport*Connectionstatematchsup
13、port*Packetfiltering*REJECTtargetsupport*FullNATrootPrOXySrc#tarXVfZSqUid-2.4.STABLEl-SrC.tar,gzrootProXySrc#CClSqUid-2.4.STABLEIrootProXySrc#./configurerootproxySrc#makeallrootPrOXySrc#makeinstall配置:编辑usrlocalSqUid/etc/squid,conf,修改以下内容,确保以下配置:httpdaccelhostVirtUalhttpdaccelPort80httpdaccelWithProX
14、yOnhttpdaccelUSeShostheaderOnCaCheeffectiveUSernobodyCaCheeffectivegroupnobodyhttpaccessallowall1.lXL2=DS/OS/NO留意这是个不定方程,可以有多个解)然后创建CaChe子名目,并修改该名目全部者位nobody:rootProXysquid#usrlocal/ScIUie!/cacherootProXysquid#ChoWnnobody:nobodyusrlocal/SClUiCI/cache修改SqUid纪录名目的全部者以允许SqUid访问:rootProXysquid#ChoWnnobody:nobodyusrlocalSqUid/logs最终启动SqUiChrootiptablelogs#usrlocalsquidbinRunCache&