一、什么是代理服务器?所谓代理服务器是指代表内部私有网中的客户连接互联网www资源的外部服务器的程序。客户与代理服务器对话,它们接收客户请求,然后连接真实的服务器,请求得到数据并将响应数据返回给客户。代理服务器发挥了中间转接作用。在代理方式下,私有网络的数据包从来不能直接进入互联网,而是需要经过代理的处理。同样,外部网的数据也不能直接进入私有网,而是要经过代理处理以后才能到达私有网,因此在代理上就可以进行访问控制,地址转换等功能。目前,代理服务器软件有很多,如NetscapeSuitProxy,MSProxy,Wingate,squid等。这些代理服务器不仅能起到防火墙的作用,而且还可以加速局域网用户对INTERNET的访问,因为代理服务器有一个大的缓冲器,将每次浏览的网页都保存起来,在下一次访问该页时就直接从缓冲器里调出,而无需再次访问原始服务器二、什么是透明代理?透明代理技术中的透明是指客户端感觉不到代理的存在,不需要在浏览器中设置任何代理,客户只需要设置缺省网关,客户的访问外部网络的数据包被发送到缺省网关,而这时缺省网关运行有一个代理服务器,数据实际上被被重定向到代理服务器的代理端口(如8080),即由本地代理服务器向外请求所需数据然后拷贝给客户端。理论上透明代理可以对任何协议通用。但是在这种情况下客户端必须正确设置DNS服务器。因为现在浏览器不设置任何代理。则DNS查询必须由browser来解析,也就是要由客户端必须在TCP/IP中设置的正确的DNS服务器,其完成dns解析。例如:从私有网络上访问因特网上的web站点。私有网地址为192.168.1.*,其中客户机是192.168.1.100,防火墙机器网卡是192.168.1.1。透明web代理被安装在防火墙机器上并配置端口为8080。内核使用iptables把与防火墙端口80的连接重定向到代理服务。私有网上的Netscape被配置为直接连接方式。私有网络的客户机需要设置DNS服务器。私有网络上机器的默认路由(别名网关)指向防火墙机器。客户机机器上的Netscape访问http://slashdot.org.1.Netscape通过查找”slashdot.org”,得到它的地址为207.218.152.131.然后它使用端口1050与此地址建立一个连接,并向web站点发出请求。2.当包由客户机(port1050)通过防火墙送往slashdot.org(port80)时,它们重定向到代理服务重定的8080端口。透明代理使用端口1025与207.218.152.131的端口80(这是原始包的目的地址)建立一个连接。3.当代理服务收到从web站点传来的页面后,通过已经建立的连接把它复制给Netscape。4.Netscape显示此页面。5.从slashdot.org的角度来看,连接是由1.2.3.4(防火墙的拨号连接IP地址)的端口1025到207.218.152.131的端口80。从客户机的角度来看,连接是从192.168.1.100(客户机)端口1050连接到207.218.152.131(slashdot.org)的端口80,但是,它实际是在与透明代理服务器对话。这就是透明代理的操作流程。三、内核编译一般来讲,透明代理所在机器往往是带动整个局域网联入互联网的入口,因此该机器往往需要配置防火墙规则以对内部网络进行防护。因此在编译内核时也许要考虑将防火墙支持选项编译进去。一般来说需要在使用makemenuconfig命令配置时打开如下选项:[*]Networkingsupport[*]Sysctlsupport[*]Networkpacketfiltering[*]TCP/IPnetworking[*]/procfilesystemsupport[*]Kernel/Usernetlinksocket[*]Netlinkdeviceemulation[*]Connectiontracking(requiredformasq/NAT)[*]FTPprotocolsupport[*]IPtablessupport(requiredforfiltering/masq/NAT)<*>limitmatchsupport[*]MACaddressmatchsupport[*]NetfilterMARKmatchsupport[*]Multipleportmatchsupport[*]TOSmatchsupport[*]Connectionstatematchsupport[*]Packetfiltering[*]REJECTtargetsupport[*]FullNAT[*]MASQUERADEtargetsupport[*]REDIRECTtargetsupport[*]Packetmangling[*]TOStargetsupport[*]MARKtargetsupport[*]LOGtargetsupport然后makedep;makeclean;makebzImage命令来编译内核。如果使用到了模块,还需要使用下面命令生成和安装模块makemodules;makemodules-install。将System.map复制到/boot目录中,将/usr/src/linux/arch/i386/boot/bzImage复制...