Next Previous Contents

8. SOCKS代理伺服器

8.1 设定代理伺服器

SOCKS代理伺服器可从 ftp://sunsite.unc.edu/pub/Linux/system/Network/misc/socks-linux- src.tgz取得。该档内也有一个称为"socks-conf"的设置档可作参考。可把该档解压,然後根据其中的说明使用该档。但使用时并不简单,应首先确定Makefile档正确无误。 在 /etc/inetd.conf中应该增添代理伺服器。因此,应该增加以下一行。

  socks  stream  tcp  nowait  nobody  /usr/local/etc/sockd  sockd
这样伺服器才会在需要时运行。

8.2 设置代理伺服器

SOCKS需要两个设置档进行设定。一个设置档设定进入取用的权限,另一个设置档设定路径,以便找到适当的代理伺服器。权限档应在伺服器上,路径档应在每一台UNIX机上。DOS机和Macintosh机都会确定自行的路径。

权限档

在socks4.2(beta)版中,权限档称为"sockd.conf",应该只有两行,一行允许(permit),一行拒绝(deny)。每行都有三项设定:

识别标示用于permit或deny。应该有单独的permit行和单独的deny行。 IP地址使用标准的4byte方式表示,如I.E. 192.168.2.0.。 修改地址行也是标准的4位元 IP地址,用来作为netmask。将这个地址想成32位元的数字。如果是1,则核对的地址的相应位置应符合IP地址中相应的位元。例如,此行的地址为∶
    permit 192.168.2.23  255.255.255.255

则只允许每一位元相符的地址,即192.168.2.23。如果地址为∶

    permit 192.168.2.0  255.255.255.0
则会允许192.168.2.0至192.168.2.255之间的每一个地址,即整个C级的地址。不得有下列这种地址出现∶
    permit 192.168.2.0  0.0.0.0
这会允许每一地址使用,不论其地址为何。 因此,允许每一个应该允许的地址,然後拒绝其余地址。如允许192.168.2.xxx范围中的每一用户,可用下列方式表示∶
    permit 192.168.2.0  255.255.255.0
    deny 0.0.0.0  0.0.0.0

注意deny行中的第一个"0.0.0.0"。由于地址以0.0.0.0修改,因此IP为何都没有影响。用0作为IP地址,因为便于打字。 特别的用户可以给予或拒绝使用的权限。这可通过iden的查验来实现。由于不是所有系统都支持iden,其中包括Trumpet Winsock,所以此处不预备多加说明。随同socks提供的说明以够使用。

路径档

SOCKS中的路径档称为"socks.conf",极易与权限档混淆。 路径档让SOCKS用户知道何时用socks,何时不用。例如,在示□的网路中192.168.2.3并不需要使用socks与192.168.2.1防火墙对话。通过Ethernet,它们之间有直接的连接。又127.0.0.1自动设为loopback。因此也不需要用socks同自己对话。它有三行输入∶

Deny行告诉socks何时拒绝一项请求。在此添入的内容同sockd.conf的内容相同,地址标示行、IP地址和修改地址行。一般而言,权限档sockd.conf也与此有关,修改地址部分则用0.0.0.0。如果不打算连到任何地方,在此可作出修改。

在direct行下列入不使用sock的地址。所有这些地址都可直接联上网路,无须经过代理伺服器。在这里又有三个位置要填∶identifier、address和modifier。例如∶

    direct 192.168.2.0 255.255.255.0

Sockd行告诉电脑那一个用户的电脑上有socks server daemon。该行内容如下∶

  sockd @=<serverlist> <IP address> <modifier>

注意@= 填入的内容。利用这种方法可以填入一系列代理伺服器的IP地址。在这里只用一个代理伺服器的地址为例。但可以列上多个伺服器的地址,以便加大容量,并当有伺服器失灵时,有其他的伺服器顶替。

设定IP地址和modifier域的方法和其他例子相同。

防火墙後的DNS 从防火墙後设定Domain Name Service是件简单不过的事。只要在作为防火墙的电脑上设定DNS即可。然後在防火墙後的电脑上设定使用这个DNS。

8.3 代理伺服器

Unix

要使应用程序利用代理伺服器,这些应用程序需要"sockified"。在这里需要两个telnet,一个进行直接通讯,一个通过代理伺服器进行通讯。SOCKS软件中有说明sock一个程式的方法,也附有几个已经sock好的程式。如果要直接使用sock好的程式,SOCKS软件会直接设定。因此,应该将保护网路内的所有程式改名,然後再改用已经sock好的程式。例如,"Finger"变为"finger.orig","telnet"变为"telnet.orig"。 必须通过include/socks.h档告诉SOCKS这种设定。 有些程式能自行处理routing和sockifying的问题。Netscape就使其中之一。例如在Netscape下要用用代理伺服器,只要在Proxies下SOCK栏内填入伺服器的地址即可(在此为192.168.2.1)。当然,每种应用程式都得作些小变动,不论其处理代理伺服器的方法为何。

微软视窗与Trumpet Winsock

Trumpet Winsock中有自带的代理伺服器功能。在"setup"选单中填入伺服器的IP地址和所有直接可联的电脑的地址。然後,Trumpet就会处理所有外送的数据包。

使代理伺服器配合UDP数据包

SOCKS软件只处理TCP数据包,而不处理 UDP。这多少减少了它的用处,因为,许多有用的程式,例如talk和Archie,都利用UDP。有一套软件,称为UDPrelay,由Tom Fitzgerald设计<fitz@wang.com>,主要作为UDP数据包的代理伺服器使用。不过在编写本文时,这套软件不能用于Linux.

8.4 代理伺服器的缺点

归根结底,代理伺服器是一个安全装置。在有限的IP地址的情况下,用它使许多用户进入网际网路有许多缺点。代理伺服器可使保护网路内的用户联到网路之外,但使网路之外的用户完全无法同网路之内的用户联系。这表示无法同网路之内的电脑进行talk或archie联网,也无法发送电子邮件。这些缺点看来并不严重,但是如果∶

FTP是代理伺服器的另一个问题。在取得或使用ls时,FTP伺服器在客户机上打开一个socket,并通过它传送信息。代理伺服器不允许进行这项工作,因此FTP无法使用。 此外,代理伺服器运行缓慢。由于需要额外资源较多,几乎任何其他能达成这项作用的伺服器都要比它快。 一般而言,如果有IP地址联网,而又不必特别顾虑安全问题,那就不要使用防火墙和(或)代理伺服器。如果没有IP地址联网,但也不顾虑安全问题,那就不妨使用IP模拟器,象Term,Slirp或TIA。Term可从ftp://sunsite.unc.edu取得,Slirp可从ftp://blitzen.canberra.edu.au/pub/slirp取得,TIA可从marketplace.com取得。使用代理伺服器的理想网路是有许多用户需要联网,那只要做一次设定之後就不必再做太多其他的工作。


Next Previous Contents