LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 10843|回复: 2

代理术语101[翻译小组]

[复制链接]
发表于 2003-10-19 15:39:21 | 显示全部楼层 |阅读模式
Proxy Terminology 101
代理术语101
作者:Dru Lavigne
06/19/2003
翻译:Edward Hayes
翻译日期:Oct 6th, 2003
原文:这里
因本人水平有限,如有错误,请批评指正。谢谢!

    如果你曾经从一个办公环境访问Internet,你的通信设备就有机会通过一个代理(proxy)。在接下来

的篇幅中,我会探讨使用代理的好处,并举例说明FreeBSD ports中一些可用的代理软件的设置。

    你也许还没有理解到底什么是代理。花点时间到下面的网址http://www.freebsd.org/ports/,然后

在“Search for查询”空格栏输入"proxy(代理)"这个词。你也许会惊奇地发现有如此多的代理存在

,也许甚至会因为所有被查术语的描述感到一点惊慌:reverse proxy(反向代理),arp

proxy、transparent proxy(透明代理)等等。当我了解大部分普通代理的术语时,我也害怕。让我们开始

通过具体的例子来开始了解那些术语吧。
   
代理基础(Proxy Basics)

    代理就其最简单的形式来讲,它是一种为网络客户端“谋取利益”(acts on behalf of)的软件。记

住在一个网络中,客户端是一个发送网络请求的实体,而服务器端一个回应请求的实体。具个例子,你的

网页浏览器就是一个向一台网站服务器发送要求网页内容请求的客户端。
    通过代理,它能够通过许多方式为客户端“谋取利益”(act on behalf of)。首先是它能代替客户

端的地位,也就是说客户端决不用直接与服务器通信。取而代之的是,客户端与代理产生一个连接,代理

再连接到服务器,接受来自服务器的任何响应并且将它们返回给客户端。这个过程通常由网页浏览器(we

b browsers )实现,如下图所示:

网页浏览器(web browsers )-------------->代理(proxy) ----------------->网站服务器(web

server)                        <--------------             <-----------------   


                  
    下一次当你访问网站的时候,观察一下你那图形用户界面的浏览器的底部。如果它显示“waiting

www.goole.ca”,这说明你的浏览器正在直接连接到某台指定的网页服务器。 然而,如果它显示诸如“

正在连接192.168.1.1”,你的请求正在通过一个基于那个地址的代理。
   
    使用代理对于一个计算机网络有很多好处。首先,在网络中唯一需求公共IP地址的那台计算机可以通

过代理软件成为主机。这就意味着即使你只能从网络服务提供商获得一个IP地址,整个网络也可以访问In

ternet。除了能节省开销,还有多了一个安全好处就是它能将你的网络在Internet中隐藏。其中任何一台

Internet主机唯一能获取的IP地址就是代理的那个IP地址。
   
    另见FreeBSD Badic:
    portupgrade
    Ports Tricks
    SMTP Proxies
    HTTP Proxies

配置一个TFTP Server

    使用代理还有更多的安全性优点。所有请求一旦通过代理,大多数代理会允许你对哪些请求允许通过

,哪些请求禁止通过进行配置。事实上,当你在估计哪个特别的代理应用程序最适合你的网络时,你通常

关心的是配置能力的选项数量和易用性。
   
    代理还有显著特点的是有前一些请求的缓存用来节省带宽。这点很象你的网页浏览器的缓存,只不过

这里这个网络都可以从代理缓存中分一杯羹。如果一个用户已经请求了一个网址,代理服务器就将内容存

到它的缓存中。当下一个同一个网址的请求到达代理时,它不会再回到Internet去获取请求的页面,相反

,它会返回缓存中的内容。记住安全页面是不会被记录在缓存里的。例如,如果你将你的信用卡信息提供

给以“https://”开头的地址的某个网站,那么那些信息不会被代理写入缓存。
   
    进行缓存操作的代理会使用一种算法来检测多久“刷新”缓存中的内容。缓存很利于节省Internet带

宽,但是用户不愿意获得在缓存中存了一个多月的页面,特别是原始的页面早就更改了。而且,某些页面

比其他的更具动态。例如,Slashdot常常在更改它的页面内容而IANA则很少改动。算法就要包含一个尺度

来帮助代理决定何时刷新它的缓存和哪个页面最先刷新。
   
    大多通常用的算法有ICP((Internet Cache Protocol),CARP(缓存阵列路由协议Cache Array

Routing Protocol)和HTCP(超文本缓存协议HyperText Caching Protocol)。你能在ICP网站了解到全部三

种协议。这些协议有个额外的优点就是它们允许多路代理来共享它们缓存的信息。这使得一个更大的网络

拥有一个分布式的缓存并且Internet请求能被平衡地载入成为可能。
   
    使用代理有个缺点:客户端要使用它必须预先配置。这个过程被称为“修改客户端”。在浏览器的例

子里,要求用户到浏览器的“参数选项Preferences”或者“选项Options”部分的“代理Proxy”这个项

中,输入代理的IP地址和代理程序监听的端口号。其它应用程序可能要求安装特殊的代理客户端软件并对

每一台要访问代理的主机进行配置。

    这里有另外一个方面来带领我们理解代理可以为客户端“谋取利益”:“透明”代理(transparent"

proxy)。透明就是指在客户端不做任何的预先配置;事实上,用户并不知道自己的请求正在通过代理服

务器。透明代理会截取客户的请求以确定可以通过,然后再将它提交给服务器。这种类型的代理通常是集

成在防火墙里,并且作为网络安全策略的一部分它允许你对其进行配置。

   
特定应用程序代理(Application-specific Proxies)
    现在是该好好提一下大多数认为是“特定应用”型的代理的时候了。仔细看看你在FreeBSD ports列

表上的结果。注意那些RealAudio proxies, IRC proxies, HTTP proxies, FTP proxies, SMTP proxies

等等。对于每一个Internet应用程序,都有一个独立的软件代理。这点很重要,它说明了代理软件真正的

实力和配置能力。

    想象一个典型的受防火墙保护的网络。在防火墙后面的用户希望网上冲浪和收发电子邮件。防火墙已

经配置成允许对外的25(SMTP,Simple Mail Transfer

Protocol简单邮件传送协议),80(HTTP),和110(POP3,Post Office Protocol邮局协议) ,另外 允许那

些返回到网络的响应的数据报。 当一个数据报到达防火墙,它的报头会和防火墙的规则进行比较以确保

那些端口号和源/目的的IP地址是允许的。

    这看起来好像很安全,是吗?只要当数据报内的数据就是所需要的时候,这是安全的。防火墙规则库

的一个缺憾是它只对报头内的信息进行严格局限。(详见TCP协议层诠释)为了能使防火墙能检查一个数据

报的数据部分,它必须能理解数据。这被称为“内容检查”,它需要额外的软件来帮助理解要检查的数据

内容。你也许已经猜到了,那个额外的软件就是应用软件代理。

    让我们拿HTTP数据报做个例子。一个网络用户发送数据报给80端口。因为防火墙规则库允许对外的80

端口,数据报能到达允许它的防火墙。然而这个http数据报中没有http 数据。用户设置了p2p应用程序,

它知道防火墙开放80端口。文件共享也许是网络管理员想要在她(?)的安全策略中要做的最后一件事,然

而防火墙规则库不能阻止这个包。

   

即使数据报包含了合法的HTTP数据,防火墙又怎么知道它是否还包含了病毒,恶意的ActiveX组件或Javas

cript代码?又或是一大堆烦人的跳出广告?防火墙不知道,但是一个好的HTTP代理能做到。
   
    最后,还有一个认证的问题。一个防火墙只能基于IP地址做出认证,但是IP地址可以伪装而且几个用

户可以使用同一台计算机。你不可能写这样的一个防火墙规则:“Gwendolyn能从10.0.0.1上网冲浪但是M

artin不行”。然而,代理可以在用户被允许Internet访问前,强制进行身份验证,也就是保存了一个记

录了允许的用户和他们允许的访问的位置的列表。

    代理听起来不错,但是为什么你的每一个应用程序都需要一个独立代理?简单的理由就是每个应用程

序使用了不同的命令。你也许还记得使用SMTP和POP3命令。如果你连接到一台SMTP服务器并试着使用LIST

命令,你会得到一个错误。那是因为LIST是一个POP3的命令,而不是SMTP的命令。类似的,一个包含SMTP

数据的数据报会包含SMTP的命令。一个SMTP代理能在数据报的数据段里查询有效的SMTP的命令。如果它什

么都没有找到,那么数据报就有可能不包含SMTP数据。

    如果你曾进行过配置一个应用代理的工作,就很容易根据每个命令的用途的解释,明白到哪儿去找每

个应用使用的命令。最好的信息来源是那个特定协议的RFC(Request for Commends评论请求)。这里我已

经总结了大多数通用应用的参考;当你浏览每一份RFC时,请查看“Commands(命令)”章节。你会发现HTT

P命令谈到时被“Methods(方法)”取代。

HTTP, RFC 2616
FTP, RFC 959
SMTP, RFC 2821
POP3, RFC 1939
IMAP4, RFC 2060
IRC,RFC 2812
   
    我们将会在建构和配置一些端口簇中现有的应用代理时重新查看应用的命令设置。
        
高级代理术语(Advanced Proxy Terms)
    在正文结束前我还想谈谈另外的一些代理术语。第一个是“反向代理”。回忆一下代理的定义:一个

能为网络客户端谋利的应用软件。反向代理和它正好相反:它是为服务器谋利的。反向代理的大多数用途

是保护网站服务器。当一个在网络上的用户向有反向代理保护的网站服务器发送请求数据时,反向代理截

取请求并确证请求中的数据是可以接受的。具个例子,那些没有任何非HTTP数据或恶意代码的HTTP命令的

数据。如果数据是可接受的,反向代理会从网站服务器上接受请求的内容,并将它返回给原来的用户。这

个方面来讲,在Internet上的用户从来不直接访问你的服务器。

    另一种类型的代理是“ARP(Address Reverser Protocol地址转换协议)代理”。ARP用在一个TCP/IP

主机要发送报的任何时候。在主机的界面上能创建一个用来发送给网络的帧,要接收它还需要知道主机的

物理地址。数据报本身只包含IP地址,ARP是被用来检测哪个物理地址与那个IP地址相对应。

    当然在ARP找到物理地址前还有一点时间,我们看看一个简单的例子:
   
web server(网页服务器) ----- firewall/NAT device(防火墙/NAT设备) ------ Internet router(路由

) ----- web browser(网页浏览器)

|-----DMZ-------|                    |------------Internet------------------|

|--- 10.0.0.0 --|                   |-- 1.2.3.0 --|
    这里有一个定位在DMZ域上受到防火墙保护的网页服务器。网页服务器分配了一个私有地址10.0.0.1

。NAT(Network Address Translation网络地址转换)设备也将私有地址和真实地址1.2.3.4静态地连接起

来。DNS(Domain Name Service)服务器有条记录指向地址1.2.3.4,因此全世界可以找寻到与网站服务器

相关联的真实地址。防火墙/NAT设备还有一个公共IP 1.2.3.100。

    当一个浏览器要想访问网站服务器上的内容时会发生什么呢?浏览器会查询DNS服务器将网站服务器

的地址解析成为1.2.3.4。然后它会将网页请求发到Internet上,在那儿路由器会将数据报传到1.2.3.0的

网络中。Internet路由器会按照网络1.2.3.0发送一个ARP请求,寻找到1.2.3.4的硬件地址。

    但是和1.2.3.4相关的不是真正的物理界面。相反,那个地址仅仅是一个逻辑联接,用来告诉防火墙

任何送往那个地址的数据报实际是送往地址为10.0.0.1的服务器上。因为没有物理界面,也就没有物理地

址和响应路由器ARP请求的主机。没有响应,路由器不能够传送数据报到网络上。   

    进入一个ARP代理。这里就是主机(在这个例子里,指的是防火墙)用自己的硬件地址回应一个ARP请求

。假设一旦它接收到帧,它就知道该怎么处理。你的FreeBSD系统有一个builtin ARP代理(arp命令)。让

我们
假设一下防火墙的硬件地址是AA:BB:CC:11:22:33。为了配置防火墙以用来接收同时包括它本身IP地址和

网络服务器IP地址的帧,使用超级用户的这个命令:

% arp -s 1.2.3.4 AA:BB:CC:11:22:33 pub
验证它是否工作:
% arp -a

(1.2.3.100) at aa:bb:cc:11:22:33 on ed0 [ethernet]
(1.2.3.4.) at aa:bb:cc:11:22:33 on ed0 permanent published [ethernet]
The pub or "published" switch is what invokes the ARP proxy.

这篇文章涉及了大多数的常用代理术语。在下一篇文章中,我们还将看到实际中当我们安装并配置完成某

个包含在FreeBSD端口簇中的端口时这些术语的使用。

Dru Lavigne是一名住在Ottawa市Willis学院的讲师。在她不多的空余时间,你可以在Remic的快速移动靶

场或者环绕Gatineau公园找到她。
发表于 2003-10-24 10:01:50 | 显示全部楼层


Cryptosystems: Configuring SSH
Cryptosystems are handy, but they're not for everyone right out of the box. In her second article on SSH, Dru Lavigne explores some of the more common configuration options for clients and servers. Nov. 28, 2002

The SSH Cryptosystem
OpenSSH encrypts sessions between two machines, making packet sniffing much more difficult. In the second of a series on Cryptosystems, Dru Lavigne explores the default configuration of OpenSSH on FreeBSD and demonstrates how to enable key pair encryption. Nov. 14, 2002

Cryptographic Terminology 101
No matter how good your internal security, your data isn't safe if it's sent externally as plain text. To protect your sensitive information from prying eyes, you need cryptography. Dru Lavigne's latest column gives a crash course on this field's vital terminology. Oct. 31, 2002

我正在看上面的三篇, 不过你的排版很乱哟!
 楼主| 发表于 2003-10-24 12:21:20 | 显示全部楼层
呵呵,主要是经验不足,欢迎兄弟多提建设性意见!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表