摘要

  该文讨论了如何在Linux2.4环境下如何通过iptables和squid实现透明代理。(2002-06-24 12:55:35)

  By 处处

  摘要:该文讨论了如何在Linux2.4环境下如何通过iptables和squid实现透明代理。

  硬件环境:联想奔月 双网卡

  软件环境:kernel 2.4.7 squid-2.4.STABLE1

  1.什么是代理服务器?

  所谓代理服务器是指代表内部私有网中的客户连接互连网www资源的外部服务器的程式。客户和代理服务器对话,他们接收客户请求,然后连接真实的服务器,请求得到数据并将响应数据返回给客户。代理服务器发挥了中间转接作用。

  在代理方式下,私有网络的数据包从来不能直接进入互连网,而是需要经过代理的处理。同样,外部网的数据也不能直接进入私有网,而是要经过代理处理以后才能到达私有网,因此在代理上就能够进行访问控制,地址转换等功能。现在,代理服务器软件有很多,如Netscape Suit Proxy,MS Proxy,Wingate,squid等。这些代理服务器不但能起到防火墙的作用,而且还能够加速局域网用户对INTERNET的访问,因为代理服务器有一个大的缓冲器,将每次浏览的网页都保存起来,在下一次访问该页时就直接从缓冲器里调出,而无需再次访问原始服务器。

  2.什么是透明代理?

  透明代理技术中的透明是指客户端感觉不到代理的存在,无需在浏览器中配置任何代理,客户只需要配置缺省网关,客户的访问外部网络的数据包被发送到缺省网关,而这时缺省网关运行有一个代理服务器,数据实际上被被重定向到代理服务器的代理端口(如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.当包由客户机 (port 1050)通过防火墙送往slashdot.org(port 80)时, 他们重定向到代理服务重定的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, 但是, 他实际是在和透明代理服务器对话。

  这就是透明代理的操作流程。

  3.内核编译

  一般来讲,透明代理所在机器往往是带动整个局域网联入互连网的入口,因此该机器往往需要配置防火墙规则以对内部网络进行防护。因此在编译内核时也许要考虑将防火墙支持选项编译进去。一般来说需要在使用make menuconfig命令配置时打开如下选项:

  [*]Networking support

  [*]Sysctl support

  [*]Network packet filtering

  [*]TCP/IP networking

  [*]/proc filesystem support

  [*] Kernel/User netlink socket

  [*] Netlink device emulation

  [*] Connection tracking (required for masq/NAT)

  [*] FTP protocol support

  [*] IP tables support (required for filtering/masq/NAT)

  <*> limit match support

  [*] MAC address match support

  [*] Netfilter MARK match support

  [*] Multiple port match support

  [*] TOS match support

  [*] Connection state match support

  [*] Packet filtering

  [*] REJECT target support

  [*] Full NAT

  [*] MASQUERADE target support

  [*] REDIRECT target support

  [*] Packet mangling

  [*] TOS target support

  [*] MARK target support

  [*] LOG target support

  然后make dep ; make clean ;make bzImage命令来编译内核。假如使用到了模块,还需要使用下面命令生成和安装模块make modules;make modules-install。

  将System.map复制到/boot目录中,将 /usr/src/linux/arch/i386/boot/bzImage复制到 /boot目录中并改名为 vmlinuz-2.4.7。最后安装新内核并重新起动:lilo;shutdown -r now即可。

  4.squid的安装配置

  下载:

  能够从squid主网站下载:

  http://www.squid-cache.org/Versions/v2/2.4/squid-2.4.STABLE1-src.tar.gz

  也能够从本地下载:

  http://www.linuxaid.com.cn/download/solution/squid-2.4.STABLE1-src.tar.gz

  编辑安装:

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!