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